Общий способ создания экземпляра имени объекта и установки его значений

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 = "name", object.address = "address" и т.д.

Я не уверен, как использовать свойства экземпляра, который я создал.

Кто-нибудь знает, как это сделать?

Благодарю!

Теги:
generics
reflection

1 ответ

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
    Спасибо вам большое!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню