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

本文深入探讨Java反射机制,包括Class对象的获取方式、实例化对象、调用方法、访问属性等核心操作。通过实例演示了如何利用反射创建对象、调用公有和私有方法、设置属性值,为动态加载和配置提供了强大的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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, "米饭");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值