Java 实例化对象名称并设置其值的通用方法
我想知道是否有一种方法允许您使用字符串创建对象 像Java 实例化对象名称并设置其值的通用方法,java,generics,reflection,Java,Generics,Reflection,我想知道是否有一种方法允许您使用字符串创建对象 像 Class classObject=Class.forName(“客户机”); Object Object=classObject.getConstructor().newInstance(); 但是能够将变量的值设置为字段的名称 因此: Field[]fields=object.getClass().getDeclaredFields(); for(int i=0;i
Class classObject=Class.forName(“客户机”);
Object Object=classObject.getConstructor().newInstance();
但是能够将变量的值设置为字段的名称
因此:
Field[]fields=object.getClass().getDeclaredFields();
for(int i=0;i
所以我会有object.name=“name”,object.address=“address”等
我不确定如何使用我创建的实例的属性
有人知道怎么做吗
谢谢 下面是一个如何做的小例子:
package test;
import java.lang.reflect.Field;
public class Test {
public static void main(String... args) throws Exception {
Class<?> object = Class.forName("test.Property");
Object o = object.getDeclaredConstructor().newInstance();
System.out.println(o);
Field testField = object.getDeclaredField("test");
Field nameField = object.getDeclaredField("name");
testField.setAccessible(true);
testField.set(o, "Hello");
testField.setAccessible(false);
nameField.setAccessible(true);
nameField.set(o, "Name");
nameField.setAccessible(false);
System.out.println(o);
}
}
class Property {
private String test;
private String name;
@Override
public String toString() {
return "Property{" + "test=" + (test == null ? "null" : test) + ", name=" + (name == null ? "null" : name) + '}';
}
}
封装测试;
导入java.lang.reflect.Field;
公开课考试{
公共静态void main(字符串…参数)引发异常{
Class对象=Class.forName(“test.Property”);
Object o=Object.getDeclaredConstructor().newInstance();
系统输出打印ln(o);
字段testField=object.getDeclaredField(“测试”);
字段名Field=object.getDeclaredField(“名称”);
testField.setAccessible(true);
set(o,“Hello”);
testField.setAccessible(false);
nameField.setAccessible(true);
nameField.set(o,“名称”);
nameField.setAccessible(false);
系统输出打印ln(o);
}
}
类属性{
私有字符串测试;
私有字符串名称;
@凌驾
公共字符串toString(){
返回“Property{“+”test=“+(test==null?“null”:test)+”,name=“+(name==null?“null”:name)+'}”;
}
}
Field[] fields = object.getClass().getDeclaredFields();
for (int i=0; i< fields.length; i++)
{
object.???????? = fields[i].getName();
}
package test;
import java.lang.reflect.Field;
public class Test {
public static void main(String... args) throws Exception {
Class<?> object = Class.forName("test.Property");
Object o = object.getDeclaredConstructor().newInstance();
System.out.println(o);
Field testField = object.getDeclaredField("test");
Field nameField = object.getDeclaredField("name");
testField.setAccessible(true);
testField.set(o, "Hello");
testField.setAccessible(false);
nameField.setAccessible(true);
nameField.set(o, "Name");
nameField.setAccessible(false);
System.out.println(o);
}
}
class Property {
private String test;
private String name;
@Override
public String toString() {
return "Property{" + "test=" + (test == null ? "null" : test) + ", name=" + (name == null ? "null" : name) + '}';
}
}