栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

一、反射机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

一、反射机制

.

一、反射机制二、反射创建对象三、反射获取类方法信息四、反射获取类属性五、反射调用构造函数

一、反射机制

什么是java反射:就是正在运行,动态获取这个类的所有信息反射机制的作用

反编译:.class–>.java使用反射机制可以获取类的属性、方法、实例化对象 反射应用场景

jdbc连接springIOC底层使用反射机制DOM4J框架hibernate、mybatis 二、反射创建对象

public class UserEntity {
    private String userName;

    public UserEntity() {
        System.out.println("对象初始化...");
    }

    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        // 2.使用Java的反射机制创建对象 类的完整路径
        Class forName = Class.forName("com.sjyl.UserEntity");
        // 3.使用反射机制创建对象
        UserEntity userEntity = (UserEntity) forName.newInstance();
        userEntity.userName = "反射对象";
        System.out.println(userEntity.userName);
    }
}

三、反射获取类方法信息
        Class forName = Class.forName("com.sjyl.UserEntity");
        Method[] methods = forName.getMethods();
        for (Method method : methods) {
            System.out.println(method.getName());
        }

因为我们任何一个类的父类都是Object,所以会有如下的方法

四、反射获取类属性

getFields:只能获取到公有的方法getDeclaredFields:能获取到所有的方法,包含私有的方法

public class UserEntity {
    private String userName;
    public int Age;

    public UserEntity() {
        System.out.println("对象初始化...");
    }

    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        // 2.使用Java的反射机制创建对象 类的完整路径
        Class forName = Class.forName("com.sjyl.UserEntity");
        Field[] fields = forName.getDeclaredFields();
        for (Field field : fields) {
            System.out.println(field.getName());
        }
    }
}
五、反射调用构造函数
public class UserEntity {

	private String userName;

	private UserEntity() {
		System.out.println("对象初始化...");
		 throw new RuntimeException();
	}

	private UserEntity(String userName) {
		System.out.println("userName:" + userName);
		this.userName = userName;
	}
}

public class Test {
    public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException {
        Class forName = Class.forName("com.itmayiedu.UserEntity");
        constructor.setAccessible(true);
		Constructor constructor = forName.getDeclaredConstructor(String.class);
		UserEntity userEntity = (UserEntity) constructor.newInstance("Hello");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/760520.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号