Java - Как вызвать функцию из класса по String
Мне надо, чтобы по названию из String переменной можно было найти из пакета класс и вызвать из него нужный метод способом актуальным для JDK 21, а актуальные варианты под JDK 21 я не нашел.
Class.getDeclaredConstructor() у меня не находит IDE:

Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Пример в онлайн-компиляторе JDoodle с Java 21:
import java.lang.reflect.*;
public class MyClass {
@SuppressWarnings("unchecked")
public static void main(String args[]) throws Exception {
System.out.println("Current JVM version: " + System.getProperty("java.version"));
Class<String> clzz = (Class<String>) Class.forName("java.lang.String");
Constructor<String> ctrStringChars = clzz.getDeclaredConstructor(char[].class);
// создание объекта при помощи конструктора
String reflected = ctrStringChars.newInstance(new char[]{'H', 'i'});
System.out.println(reflected);
// вызов метода для объекта
Method repeat = clzz.getMethod("repeat", int.class);
String repeated = ((Class<String>)repeat.getReturnType()).cast(repeat.invoke(reflected, 3));
System.out.println(repeated);
// вызов статического метода
Method valueOf = clzz.getMethod("valueOf", int.class);
String statResult = ((Class<String>)valueOf.getReturnType()).cast(valueOf.invoke(null, 123));
System.out.println(statResult);
}
}
Вывод:
Current JVM version: 21
Hi
HiHiHi
123
