java反射机制

反射是java语言中的一种机制,通过这种机制可以动态的实列化对象,

读写属性,调用方法。

类类:

Class.forName(完整类名)

Class<Student> stuClazz=(Class<Student>)Class.forName("com.zking.reflect.Student");

类名.class:

Class<Student> stuClazz01=Student.class;

对象.getClass():

Student stu = new Student();
Class<Student> stuClazz02=(Class<Student>)stu.getClass();

反射实列化:

getConstructor:

Constructor<Student> stuCon= stuClazz.getConstructor(String.class);  Student stu03= stuCon.newInstance("ls");
 System.out.println("stu03= "+stu03.getSid());

getDeclaredConstructor:

newInstance:

私有的

Constructor<Student> stuCon05=stuClazz.getDeclaredConstructor(Integer.class);
//打开私有方法权限
 stuCon05.setAccessible(true);
Student stu05 = stuCon05.newInstance(23);
System.out.println("stu05 ="+stu05.age);

反射动态方法调用:

getMethod:

有参

Method m02 = stuClazz.getMethod("hello", String.class);
        m02.invoke(stu02, "hhsj");

getDeclaredMethod:

私有的

Method m03= stuClazz.getDeclaredMethod("add", Integer.class,Integer.class);
        m03.setAccessible(true);
        int sum = (int)m03.invoke(stu02, 3,3);
        System.out.println(sum);

反射读写属性:

getDeclaredField:

//获取私有的属性
        Field f02= stuClazz.getDeclaredField("sname");
        f02.setAccessible(true);
        String name =(String) f02.get(stu02);
        System.out.println(name);

getDeclaredFields:

Field[]  fs =stuClazz.getDeclaredFields();
        for(Field f04:fs) {
            f04.setAccessible(true);
            System.out.println(f04.get(stu02));
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值