java中反射与底层框架的编写
2023-12-25 22:40:11
反射
是一种底层技术,通常用于底层框架的编写
类对象
- 类的对象: 是类实例化的结果,可以存在多个
- 类对象: 是类加载的产物, 通常只有一个, 内部存放类的所有信息(包,属性,方法,构造,父类信息,接口信息等)
获取类对象-Class
-
类名.class
Class<类名> 对象名=类名.class
-
对象名.getClass()
Class 对象名=对象名.getClass();
-
Class.forName
Class 对象名=Class.forName("类的全限定名");
public static void main(String[] args) throws Exception{
Class<Student> c1 = Student.class;
Student stu = new Student();
Class c2 = stu.getClass();
Class c3 = Class.forName("com.by.entity.Student");
}
常用方法
- newInstance(): 利用类对象中的无参构造构建一个类的实例对象
- Constructor<类名> getDeclaredConstructor(参数列表的类对象1,参数列表的类对象2,…): 获取指定参数列表的有参构造器对象
- newInstance(实参列表): 利用指定有参构造器对象构建类的实例对象
public static void main(String[] args) throws Exception{
Class<Student> c1 = Student.class;
Student stu1 = c1.newInstance();
Class c3 = Class.forName("com.by.entity.Student");
//获取的对像默认为Object类型,需要进行类型强转
Student stu2 = (Student) c3.newInstance();
stu1.setName("张三");
stu2.setName("李四");
System.out.println(stu1);
System.out.println(stu2);
//获取全属性的有参构造器对象
//Constructor<Student> con = c1.getDeclaredConstructor(String.class, int.class, double.class);
Constructor<Student> con = c3.getDeclaredConstructor(String.class, int.class, double.class);
//利用有参构造器对象构建类的实例
Student stu3 = con.newInstance("张三", 20, 99.5);
System.out.println(stu3);
}
反射的优缺点
优点
- 打破封装
- 提升代码扩展性
缺点
- 打破封装
- 降低对象属性的安全性
反射掌握重点
- 类对象和类的对象的区别
- 获取类对象的三种方式
- 通过反射构建类的对象的两种方式
文章来源:https://blog.csdn.net/z122899/article/details/135207173
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!