网上对于java反射的解释已经很多了,很多官方的语言我们并不能很好的理解。
我在这里说的通俗些,java反射的作用就是让我们从java虚拟机里面生成的class来进行反序列化得到这个类的实例。
那么它的用处就更加多了,例如android中startyactivity()方法传入的Intent对象。在内部其实用到的就是java的反射。
首先来写一个测试类 ReflectBean
/**
* 反射实体类
*/
public class ReflectBean implements IReflect {
@RetentionTest(hello = "hai", world = "sb")
private int id;
private String[] names;
private ArrayList<Double> doubles;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public void onButtonClick(View v) {
}
@Override
public void onCheckClick() {
}
public enum reflectEnum {
ONE,
TOW,
THREE;
}
public ReflectBean() {
}
public ReflectBean(String aaa) {
}
public ReflectBean(String[] aaa) {
}
public void reflecteTest() {
}
@RetentionTest(world = "hahahhaa")
public String reflectAdd(String aaa) {
Log.i("test", "reflectAdd方法调用:" + aaa);
return aaa;
}
}
/**
* 测试接口
*/
public interface IReflect {
void onButtonClick(View v);
void onCheckClick();
}
好。接下来我就来讲述一下java反射的使用。
首相定义一个ReflectMobel类
1,反射一个类的三种方法
private static final String className = "com.android.ui.reflect.ReflectBean";
/**
* 反射一个类有三种方法
* */
//1
Class<ReflectBean> class1 = ReflectBean.class;
Log.i("test", class1.getName());
//2
Class class2 = Class.forName(className);
//3
ReflectBean reflectBean = new