2015-03-25 53 views
1

我想知道是否有一种方法,可以让你使用一个字符串 像通用的方法来实例化一个对象名称,并设置其值

Class<?> classObject = Class.forName("Client"); 
Object object = classObject.getConstructor().newInstance(); 

创建一个对象,但可以设置的值变量的字段的名称

这样:

Field[] fields = object.getClass().getDeclaredFields(); 
for (int i=0; i< fields.length; i++) 
{ 
    object.???????? = fields[i].getName(); 
} 

所以我会object.name = “名字”,object.address = “地址” 等

我不知道如何使用我创建的实例的属性。

有没有人知道一种方法来做到这一点?

谢谢!

回答

2

这里是如何做到这一点一个小例子:

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) + '}'; 
    } 
} 
+0

太谢谢你了! – Lilz 2015-03-25 14:13:59

相关问题