java泛型怎么用反射生成_Java 之 使用反射生成并操作对象

本文详细介绍了Java反射的使用,包括通过反射创建对象的两种方式,如何获取或设置对象的属性值,调用方法,操作数组,以及在运行时获取注解信息和读取类的泛型实参。示例代码涵盖反射的各种应用场景,有助于理解Java反射机制。
摘要由CSDN通过智能技术生成

一、使用反射创建对象

通过反射来生成对象有如下两种方式:

方式一:

使用 Class 对象的 newInstance() 方法来创建 Class 对象对应类的实例,这种方法要求该 Class 对象的对应类有默认构造器,而执行 newInstance() 方法实际上是利用默认构造器来创建该类的实例。

方式二:

先使用 Class 对象获取指定的 Constructor 对象,再调用 Constructor 对象的newInstance(Object... args) 方法来创建该 Class 对象对应类的实例。通过这种方式可以选择使用某个类的指定构造器来创建实例。

通过第一种方式来创建对象是比较常见的情形,因为很多  JavaEE 框架中都需要根据配置文件信息来创建实例对象,从配置文件读取的只是某个类的字符串类名,程序就需要根据该字符串来创建对应的实例,就必须使用反射。

代码示例:

1 importjava.lang.reflect.Constructor;2

3 importorg.junit.Test;4

5 public classTestNewInstance {6 @Test7 public void test1() throwsException{8 Class> clazz = Class.forName("com.ks.reflect.Student");9 Object obj =clazz.newInstance();10 System.out.println(obj);11 }12

13 @Test14 public void test2() throwsException{15 Class> clazz = Class.forName("com.ks.reflect.Student");16 Constructor> constructor = clazz.getDeclaredConstructor(String.class);17 Object obj = constructor.newInstance("张三");18 System.out.println(obj);19 }20 }21 classStudent{22 privateString name;23

24 publicStudent(String name) {25 super();26 this.name =name;27 }28

29 publicStudent() {30 super();31 }32

33 @Override34 publicString toString() {35 return "Student [name=" + name + "]";36 }37 }

二、获取或设置某个对象的属性值

通过 Class 对象的 getFields() 等方法可以获取该类所包括的全部 Field(属性)或指定 Field。

而Field类除了提供获取属性的修饰符、属性类型、属性名等方法外,还提供了如下两组方法来访问属性:

public xxx getXxx(Object obj):获取obj对象该Field的属性值

public void setXxx(Object obj,Xxx value):设置obj对象该Field的属性值为value。

此处的XXX 对应 8 种基本数据类型,如果该属性的类型是引用数据类型,则直接使用get(Object o

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值