package test;
public class Superman extends Person{
private String name;
private int age;
public Superman(){
}
public String getName(){return name}
public void setName(String name){this.name=name}
………………
public void fly(){System.out.println("flying……");}
public static void main(String[] args){
-----------------
Class clazz=Class.forName("test.Superman");
//反射机制获取类对象
clazz.getName()//获取类名称
clazz.getSuperClass().getName()//获取父类名称
.................................
Class clazz=Superman.class
//通过类名称类对象
.........................
Superman man=new Superman();
Class clazz=man.getClass();
//通过实例对象获取类对象
.................................................................
java中对象的创建依靠java反射机制,这也就是反射的意义所在
Superman superman=(Superman)clazz.getInstance();
superman.setAge(20);
superman.setName("clack");
System.out.println(superman.getAge()+"/"+superman.getName());
...........................................................................
通过java反射机制获取类的方法
Method method=clazz.getMethod("fly");//参数为方法名
method.invoke(clazz.newInstance());//反射机制获取对象调用fly方法输出flying……
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Class clazz=Class.forName("java.util.HashSet");//通过反射机制获取Class对象
HashSet hs=(HashSet)clazz.newInstance();//通过Class对象获取实例对象
Method[] methods=clazz.getDeclareMethods();//通过类对象获取类方法
for(int i=0;i<methods.length;i++){
System.out.println(methods[i);
}
Method method=clazz.getMethod("add",Object.class);//获取add方法
method.invoke(hs,"hello");//hs对象调用add方法添加hello字符串
method.invoke(hs,"world");//hs对象调用add方法添加world字符串
Iterator it=hs.iterator();
while(it.hasNext()){
System.out.println(it.next());//输出 hello world
}
}
}