Строка для нового объекта с параметрами - PullRequest
2 голосов
/ 17 мая 2011

Как мне создать новый экземпляр объекта из строки?

Я хочу сделать это:

Event event = new Event("hello");  
event.setName("nice!");

, но только с

String object = "Event";  
String object_variable_name = "event";  
String object_params = "hello";

Возможно ли это?

Ответы [ 3 ]

2 голосов
/ 17 мая 2011

Вы можете создать экземпляр класса с помощью API отражения.Но вам нужно полное имя класса, простого имени (= без конструктора) недостаточно.

Class clazz = Class.forName("com.example.Event");
Constructor constructor = clazz.getConstructor(String.class);
Object instance = constructor.newInstance("hello");

Присвоить его переменной, в которой имя и тип переменных хранятся в строках, невозможно.Обычный шаблон для реализации этого - использовать карту:

Map<String, Object> events = new HashMap<String, Object>();
events.put("event", event);
0 голосов
/ 17 мая 2011

Вот как вы получаете экземпляр класса (чтобы вы могли вызвать конструктор): Как получить объект класса из имени класса в Java

Теперь вы можете использовать API-интерфейс Beans, чтобы получить геттер для свойства name. См. Этот вопрос: Отражение Java: создание нового объекта с указанным типом

Или вы можете использовать refleasm или отражений или commons-beanutils , чтобы сделать вашу жизнь намного проще

0 голосов
/ 17 мая 2011

Вы можете использовать java.lang. Класс getConstructor isnstead.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...