这篇文章给大家介绍java中怎么实现类的反射机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
一、反射概念
(1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。
(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。
二、反射的使用场景
(1)hibernate框架的延迟加载;spring框架的IOC和AOP;数据源驱动加载Class.forName("com.mysql.jdbc.Driver"); // 动态加载mysql驱动
(2) 获取Class对象的三种方式
// 方式一: 通过Object类中的getClass()方法, 通过该类的实例
Class c = new Object(). getClass();
或者Class c = new Users().getClass();
//获取,打印输出Object类的所有方法
Arrays.asList(c.getDeclaredMethods()).forEach(System.out::println);
// 方式二: 通过类名去获取
Class c = Object.class;
或者Class c = Users.class;
//获取,打印输出Object类的所有方法
Arrays.asList(c.getDeclaredMethods()).forEach(System.out::println);
// 方式三: 通过类的全路径
Class c = Class.forName("java.lang.Object");
Class c = Class.forName("com.mysql.jdbc.Driver"); // 动态加载mysql驱动
//获取,打印输出Object类的所有方法
Arrays.asList(c.getDeclaredMethods()).forEach(System.out::println);
关于java中怎么实现类的反射机制就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。