java 获取三种字节码的方式以及应用

1

Class clazz1=Class.forName("com.xiaonuo.ceshi.Person");

2

Class clazz2=Person.class; 

3      
Person person=new Person();
Class clazz3=person.getClass();

使用方法

//无参数方法
        Class clazz1=Class.forName("com.xiaonuo.ceshi.Person");
        Person p=(Person) clazz1.newInstance();
        p.name="小绵羊";
        p.age=14;
        p.show();
        
        //第二种有参数
        Constructor c = clazz1.getConstructor(String.class,Integer.class);//无参数构造器
        Person person2=(Person)c.newInstance("cyc",99);
        person2.show();

 

//获取字节码的方法来设置
        //设置public 的属性
        Field f1=clazz1.getField("name");
        f1.set(person2, "sgw");
        //设置私有的
        Field f2 = clazz1.getDeclaredField("sex");
        f2.setAccessible(true);
        f2.set(person2, "男");
        person2.show();

//公有的方法
        Method m1 = clazz1.getMethod("show");//clazz1.getMethod(方法名字,String.class)如果是字符串的话
        m1.invoke(p);//m1.invoke(类的名字,方法参数);
        
        //私有方法
        Method m2 = clazz1.getDeclaredMethod("eat",String.class);
        m2.setAccessible(true);
        m2.invoke(p, "米饭");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值