У меня есть имена классов bean как «Bean1». В моем основном методе у меня есть строка, содержащая имя переменной. String str = "Bean1"; Теперь, как я могу использовать переменную String, чтобы получить класс и получить доступ к свойствам Bean. Я новичок в Java. пожалуйста помоги.java Строка к классу
ответ
Вы должны использовать Java Reflection API:
Class c = Class.forName("package.name.Bean1");
Затем вы можете использовать c.newInstance(), чтобы создать экземпляр класса. Этот метод использует конструктор, который не требует параметров.
См подробности здесь: http://download.oracle.com/javase/tutorial/reflect/
, ему, вероятно, также нужен экземпляр Bean1 – cherouvim
. Функциональность, которую я пытаюсь реализовать, заключается в том, что «Существует класс Inetrface и связанные с ним классы Bean, созданные на время запуска приложения. Я могу получить путь, в котором находится класс и интерфейс bean. Теперь у меня есть класс «SrcInfo», где список mehtod и параметры Bean предоставляются как переменные класса. Теперь мне нужно динамически создать класс java, где мне нужно создать метод, который принимает объект Bean в качестве аргумента и возвращает HashMap, манипулируя данными, содержащимися в объекте Bean. Таким образом, я получил имя класса bean как переменную String. –
@MANU SINHA: вы должны включить эту информацию в вопрос (отредактируйте ее, пожалуйста). Это важная информация для получения полезного ответа. –
Дубликат Does Java support variable variables?
Java не поддерживает динамически получать переменную, основанную на шнурке от его имени (также известный как переменные переменных). Вероятно, существует другой способ сделать то, что вы пытаетесь сделать, например, использовать объект Map для сопоставления имен с beans. Если вы отредактируете свой вопрос, чтобы объяснить, что вы хотите сделать немного подробнее, у нас могут быть более конкретные ответы.
(С другой стороны, если речь шла о классе под названием Bean1, то право Кель в.)
Шаг за шагом:
//1. As Kel has told you (+1), you need to use
//Java reflection to get the Class Object.
Class c = Class.forName("package.name.Bean1");
//2. Then, you can create a new instance of the bean.
//Assuming your Bean1 class has an empty public constructor:
Object o = c.newInstance();
//3. To access the object properties, you need to cast your object to a variable
// of the type you need to access
Bean1 b = (Bean1) o;
//4. Access the properties:
b.setValue1("aValue");
Для этого последнего шага, вы должны знать тип компонента или супертип со свойствами, которые вам нужно получить. И я предполагаю, что вы этого не знаете, если вся информация, которую вы имеете в классе, является строкой с ее именем.
Используя отражение, вы можете получить доступ к методам класса, но в этом случае вам нужно будет знать имена и типы входных параметров методов, которые будут вызываться. Забегая вперед на примере, изменить шаги 3 и 4:
// 3. Get the method "setValue1" to access the property value1,
//which accepts one parameter, of String type:
Method m=c.getMethod("setValue1", String.class);
// 4. Invoke the method on object o, passing the String "newValue" as argument:
m.invoke(o, "newValue");
Может быть, нужно пересмотреть свой дизайн, если вы не имеете всю эту информацию avalaible во время выполнения.
- 1. Тройная строка к классу узлов
- 2. Java - обратитесь к реализованному классу
- 3. Object [] к классу [] в Java
- 4. Linq проецирования к классу
- 5. Доступ к «окончательному» классу модификатора в java
- 6. java limit доступ к сеттерам по классу
- 7. Получить данные из CustomAdapter, к классу Java
- 8. доступа к классу JFrame из подкласса Java
- 9. JSON привязки данных к классу Java
- 10. Java generic, идущий от типа к классу
- 11. Перемещение метода к другому классу в Java
- 12. метод finalize() в JAVA принадлежит к классу?
- 13. Подключите C# к Java-классу по HTTP
- 14. Фрагмент, доступ к другому классу java
- 15. Java - передать переменную от класса к классу
- 16. Доступ к классу в статическом java-методе
- 17. Назначение пакета Java к классу JRuby
- 18. ядро Java (относящийся к классу струнного)
- 19. Java, доступ к другому классу не работает
- 20. Как добавить интерфейс к классу в java?
- 21. Ошибка пути к классу
- 22. Доступ к другому классу
- 23. Пути доступа к статическому вложенному классу в Java
- 24. WPF: новая строка в Datagrid, которая привязывается к настраиваемому классу
- 25. Как ограничить доступ к вложенному классу классу?
- 26. MySQL подключается к стандартному классу java, но не к сервлету
- 27. Возвращаясь к основному классу
- 28. Переход к абстрактному классу
- 29. Мне нужно передать данные к классу, а затем вернуться к главному классу в Java
- 30. Java - Как получить доступ к внешнему классу из аргумента?
Функциональность, которую я пытаюсь реализовать, заключается в том, что «есть класс Inetrface и связанные с ним классы Bean, созданные во время выполнения приложения. Я могу получить путь, в котором находится класс и интерфейс bean. получил класс «SrcInfo», где список mehtod и параметры Bean предоставлены как переменные класса. Теперь мне нужно динамически создать класс java, где мне нужно создать метод, который принимает объект Bean в качестве аргумента и возвращает HashMap by манипулируя данными, содержащимися в объекте Bean. Таким образом, у меня есть имя класса bean как переменная String –