java反射获取/创建对象

获取class对象

1、调用某个对象的getClass()方法

 例:Person p =  new Person();

   Class clazz  =  p.getClass();

2、调用某个类的class属性

 例:Class clazz = Person.class;

3、使用Class类中的forName()静态方法(最安全,性能好)

 例:Class clazz  = Class.forName("类的全路径");(最常用)

 

Class类:反射的核心类,可以获取类的属性和方法等信息

Field类:java.lang.reflect包中的类,表示类的成员变量,可以获取和设置类的属性

Method类:java.lang.reflect包中的类,表示类的方法,可以获取和设置类中的方法信息或执行方法

Constructor类:java.lang.reflect包中的类,表示类的构造方法

 

例:

获取Person类的所有方法信息

  Method[] method = clazz.getDeclareMethods();

获取Person类的所有成员属性信息

  Field[] field = clazz.getDeclareFields();

获取Person类的所有构造方法信息

  Constructor[] constructor = clazz.getDeclareConstructors();

 

创建对象

Class对象的newInstance()
1. 使用 Class 对象的 newInstance()方法来创建该 Class 对象对应类的实例,但是这种方法要求 该Class对象对应的类有默认的空构造器

1
例:Person p = (Person) clazz.newInstance();

  

调用Constructor对象的newInstance()

2、先使用Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance() 方法来创建 Class对象对应类的实例,通过这种方法可以选定构造方法创建实例

1
2
3
4
例://获取构造方法并创建对象
  Constructor c=clazz.getDeclaredConstructor(String.class,String.class,int.class);
  //创建对象并设置属性
  Person p1=(Person) c.newInstance("李四","男",20);

  

 

posted @   星峰之耀  阅读(510)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示