2015-03-25 55 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

相關問題