通过例子了解java的反射机制

本文深入探讨了Java反射机制的应用,包括如何使用反射创建对象、调用方法及获取类信息等。通过具体示例展示了反射机制在类实例化、方法调用等方面的功能。

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

}

  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值