反射java
1. java的反射机制是什么
反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。
反射的好处:大大的增强了程序的扩展性。
反射的基本步骤:
1、获得Class对象,就是获取到指定的名称的字节码文件对象。
2、实例化对象,获得类的属性、方法或构造函数。
3、访问属性、调用方法、调用构造函数创建对象。
2. java中反射的三种方法是
第一种:通过forName()方法;
第二种:类.class;
第三种:对象.getClass()。
举例如下:
package
test;
public class Demo{
public static void
main(){
Class<?> c1 = null;
Class<?> c2 =
null;
Class<?> c3 =
null;
//三种反射用实例化方式
try{
//最常用的一种形式
c1 =
Class.forName("test.X");
}catch(ClassNotFoundException
e){
e.printStackTrace();
}
//通过Object类中的方法实例化
c2
= new X().getClass();
//通过类.class实例化
c3 =
X.class;
System.out.println("类名:" + c1.getName());
//得到类名
System.out.println("类名:" + c2.getName());
//得到类名
System.out.println("类名:" + c3.getName());
//得到类名
}
}
3. java中的反射怎么用
首先应该说 反射机制提供的功能是很强大的 但是客观性和维护性很差
一般反射用在 构造框架 以及工具开发等等
但是实际开发软件运用的并不多
下面是一个简单的例子
package com.wqx.test4;
public class Test {
public void sayhello(String name)
{
System.out.println("hello:"+name);
}
public static void main(String[] args) {
try {
//把test 这个类载入内存
Class c=Class.forName("com.wqx.test4.Test");
//创建这个类的实例
Object obj=c.newInstance();
//通过class来取得这个方法对象 并且声明 这个类的参数类型
java.lang.reflect.Method method=c.getMethod("sayhello", Class.forName("java.lang.String"));
//invoke 来执行方法对象 记得参数类型要跟这里的参数匹配
method.invoke(obj, "wqx");
} catch (Exception e) {
// TODO: handle exception
}
}
}
4. java 反射有什么用
反射就是把java类中的各种成分映射成为相应的java类。例如:一个java类用一个Class类的对象来表示,一个类中的组成部分:成员变量、方法、构造函数、包等等信息也用一个个java类来表示,就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的java类,表示java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造函数,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,它们是Field、Method、Constructor、Package等等
在平时的编程中,反射基本用不到,但是在编写框架的时候,反射用的就多了,比如你要使用某一个类进行操作,但是这个类是用户通过配置文件配置进来的,你需要先读配置文件,然后拿到这个类的全类名:比如com.onede4..Person,然后在利用反射API来做操作