其实,反射机制,也不是很难也就,也那么几句话。那,为什么还要写,很简单呀,因为我不懂,也不怎么熟悉,学语言这个东西吗,还是自己动手才是王道那样,你才能实打实的掌握,不然感觉自己总是漂的。动手还有个最大好处,就是再敲代码时,你会不知不觉想很多,或者不知不觉出点小错,这样的话,会让你理解的更深刻。总之一句话多敲代码。
下面是反射的一些讲解:
链接地址:http://www.cnblogs.com/mengdd/archive/2013/01/26/2877972.html
例子如下:
public class PersonInfo {
private String name;
private String sex;
private int age;
private String addrress;
public boolean isMarrary = false;
public PersonInfo(String name,String sex){
this.name=name;
this.sex=sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddrress() {
return addrress;
}
public void setAddrress(String addrress) {
this.addrress = addrress;
}
public boolean isMarrary() {
return isMarrary;
}
public void setMarrary(boolean isMarrary) {
this.isMarrary = isMarrary;
}
}
反射main函数:
public class main {
/**
* @param args
*/
public static void main(String[] args) {
//////////////////////////////////////反射////////////////////////////////
Class<?> classType=PersonInfo.class;
//获得所有方法
Method[] methods=classType.getDeclaredMethods();
for(Method method:methods){
System.out.println(method);
}
try {
//通过反射,调用构造方法,生成对象
Object object=classType.newInstance();
//获得对应的方法类
Method methodSetName=classType.getDeclaredMethod("setName", new Class[]{String.class});
//调用方法
methodSetName.invoke(object, new Object[]{"lihuan"});
//获得对应的方法类
Method methodGetName=classType.getDeclaredMethod("getName");
//调用方法
System.out.println(methodGetName.invoke(object));
/////////////////通过构造方法生成对象//////////////////
Constructor constructor=classType.getConstructor(new Class[]{String.class,String.class});
PersonInfo info=(PersonInfo) constructor.newInstance(new Object[]{"lihuan","nan"});
Method method=classType.getDeclaredMethod("getSex");
System.out.println(method.invoke(info));
//写在这里是为了,告诉大家思维是活的,学知识点不要太死
System.out.println(info.getSex());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}