Я хочу, чтобы пользователь мог выбрать число 1-3, а затем найти один из классов в массиве и вызвать статический метод для этого класса.Это кажется обычным явлением в языках сценариев, хотя кажется, что это невозможно в скомпилированном / строго типизированном языке.
Да, возможно запустить статический метод накласс, когда все, что у вас есть, это .class
.Вот код, который показывает массив Class
объектов с одной записью, а затем вызывает определенный метод для него.Вы должны иметь возможность изменить это так, чтобы оно содержало столько классов, сколько у вас есть, и вызывать любой метод, который вы хотите.
import java.lang.reflect.InvocationTargetException;
public class Example {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
Class[] classes = new Class[]{A.class};
classes[0].getMethod("print").invoke(null); // run named method from class in array
}
}
class A {
public static void print() {
System.out.println("static print() method called on: " + A.class);
}
}
Вот вывод, когда я запускаю это локально:
static print() method called on: class A