我有 A1.java, A2.java, A3.java ... A10.java 等十个类(也许更多);
他们里面都有一个public static String getResponse()
的方法,不过里面所做的事情和回复的字符串都不一样;
我还有一个变量 String name = "A1";
,不确定变量里面的到底是哪一个类的名字,不过肯定是这是个类里面的一个。
我想当我收到这个name变量之后动态调用所对应的类的get
Response方法,而且不想用if-else一个个判断。
试了下下面的代码,forName回复的是一个class对象,好像不能强制类型转换。能转换也不知道到底转换成哪一个对象,我不想一个个if-else判断。
String result = Class.forName(name).getResponse();
PHP中文网2017-04-18 10:57:19
Java Reflection의 사용입니다.
먼저 Class.forName
를 통해 클래스의 Class 객체를 얻은 다음, 이 Class 객체의 getMethod
메소드를 통해 지정된 메소드 객체(Method)를 얻어야 합니다. 마지막으로 이 Method 객체를 통해 이 메소드를 호출합니다.
소스 코드에 표시:
天蓬老师2017-04-18 10:57:19
class.forName은 클래스 객체를 얻습니다. 그러면 이 클래스 객체의 getMethod 메소드를 통해 해당 메소드를 얻을 수 있습니다. 그런 다음 해당 메서드를 호출합니다
天蓬老师2017-04-18 10:57:19
이 10개 클래스 모두
와 같은 인터페이스를 구현할 수 있나요? 으아아아 그러면 A1, A2...는 모두 implements A0
이고 getResponse
을 구현합니다(그러나 정적으로 정의할 수는 없습니다).
그런 다음 다음과 같이 작성할 수 있습니다.
으아아아