java 反射获取字段值_java – 使用反射获取字段值

像这样……

import java.lang.reflect.Field;

public class Test {

public static void main(String... args) {

try {

Foobar foobar = new Foobar("Peter");

System.out.println("Name: " + foobar.getName());

Class> clazz = Class.forName("com.csa.mdm.Foobar");

System.out.println("Class: " + clazz);

Field field = clazz.getDeclaredField("name");

field.setAccessible(true);

String value = (String) field.get(foobar);

System.out.println("Value: " + value);

} catch (Exception e) {

e.printStackTrace();

}

}

}

class Foobar {

private final String name;

public Foobar(String name) {

this.name = name;

}

public String getName() {

return this.name;

}

}

或者,您可以使用类的newInstance方法在运行时获取对象的实例.您仍然需要先设置该实例变量,否则它将没有任何值.

例如.

Class> clazz = Class.forName("com.something.Foobar");

Object object = clazz.newInstance();

或者,它的构造函数中有两个参数,例如String和int ……

Class> clazz = Class.forName("com.something.Foobar");

Constructor> constructor = clazz.getConstructor(String.class, int.class);

Object obj = constructor.newInstance("Meaning Of Life", 42);

或者您可以使用clazz.getConstructors()在运行时查询其构造函数

NB我故意省略了在这里创建的对象的转换为预期的类型,因为这会破坏反射点,因为如果你这样做,你已经知道了类,这将否定反射的必要性.第一名.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值