首页 > 代码库 > java反射
java反射
//之前懒得打字,今天稍微啰嗦点。说说什么是java反射,这个打个比喻,反射就像是一面镜子,通过它我们可以反观自己。反射其实就是用于描述java类的一个机制,通过它,可以了解类的属性和方法,在java的代理中就用到了反射。下面是我学习过程中的一些代码。
public static void main(String[] args) {
try {
Class<?> cl1=Class.forName("com.java.reflect.Person");
//获取class中的所有方法,除私有方法之外
Method[] methods=cl1.getMethods();
for(Method method:methods){
System.out.println(method.getName());
}
System.out.println("^^^^^^^^^^^");
//只获取当前类的所有方法,包括私有方法。
Method[]methods2=cl1.getDeclaredMethods();
for(Method method:methods2){
System.out.println(method.getName());
}
//获取指定的方法
System.out.println("^^^^^^^^^^^");
try {
Method method3=cl1.getMethod("setName", String.class,int.class);
Object obj=null;
try {
obj=Class.forName("com.java.reflect.Person").newInstance();
Object[]agrs={"hello",1};
//执行obj类相应的方法,特别的是在方法是通过方法名和参数的列表来实现的
method3.invoke(obj, agrs);
System.out.println(obj.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}