有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java是实例化对象名并设置其值的通用方法

我想知道是否有一种方法可以让你用字符串创建一个对象 就像

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();
}

所以我会反对。name=“name”,对象。address=“address”等

我不确定如何使用我创建的实例的属性

有人知道怎么做吗

谢谢


共 (1) 个答案

  1. # 1 楼答案

    下面是一个小例子,说明如何做到这一点:

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