Java反射技术

类加载器

        将我们的class文件读取到内存中 注意对于类的加载只进行一次

public class Main {
    public static void main(String[] args) {
        UserEntity p1 = new UserEntity();
        UserEntity p2 = new UserEntity();
        System.out.println(UserEntity.class);
        System.out.println(p1.getClass());
        System.out.println(p2.getClass());
    }
}

 结果-->>>

反射API

        对象创建API

//获取对应class
Class<?> aClass = Class.forName("UserEntity")
//new 无参构造 创建对象        
UserEntity userEntity = (UserEntity) aClass.newInstance();                 System.out.println(userEntity);        
//new 有参构造 创建对象        
Constructor<?> constructor = aClass.getConstructor(Integer.class, String.class);        
UserEntity user = (UserEntity)constructor.newInstance(12, "张三");                 System.out.println(user);

        属性API

               获取对象中所有的公有属性

                        Field[] fields = aClass.getFields();

                获取对象中的所有属性

                        Field[] fields = aClass.getDeclaredFields();

                属性赋值

                        Field nameField = aClass.getDeclaredField("name");      

                        完整代码

Class<?> aClass = Class.forName("UserEntity");
UserEntity userEntity = (UserEntity)aClass.newInstance();
//声明赋值属性名
Field nameField = aClass.getDeclaredField("name");
//设置true对私有属性进行赋值
nameField.setAccessible(true);
//对属性进行赋值 参数1为对应类名 参数2为所有赋值的值
nameField.set(userEntity, "John");
System.out.println(userEntity.getName()); //输出John

                 对象方法获取

                                //获取所有公有方法 包含父类方法 返回数组        

                                Method[] methods = aClass.getMethods();        

                                //获取对象所有方法 不包含父类方法 返回数组        

                                Method[] declaredMethods = aClass.getDeclaredMethods();

                                //调用方法        

                                Method m1 = aClass.getMethod("方法名", 参数类型1.class, 参数类型2.class...);        

                               返回类型 result = (返回类型)m1.invoke(类名, 参数1, 参数2);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值