public class A {
public String foo() {
return "A said foo";
}
}
public class B {
public String foo() {
return "B said foo";
}
}
이 메소드를 호출 할 수있는 일반 클래스를 만들고 싶습니다. 하지만 런타임에이 작업을 수행하는 방법과 컴파일 시간에 대한 아이디어가 없습니다.
형식을 확인하고 A 또는 B로 캐스팅합니다.
메서드를 가져옵니다.
getMethod를 호출하는 제네릭 예제 :
public class Template<T> {
private T mT;
public Template(T t) {
mT = t;
}
public String bar() {
String result = "no result";
try {
Method m = mT.getClass().getMethod("foo", null);
result = (String)m.invoke(mT);
} catch (Exception e) {
result = e.toString();
e.printStackTrace();
}
return result;
}
}
다른 방법이 있습니까? 나는 다음과 같은 것을 찾고있다.
public class Template<T extends A | B> {
...
}
나는 "A"와 "B"클래스의 창조자가 아니다.
실제로. 인터페이스 (또는 수퍼 클래스)가 없으면이를 수행하는 * 유일한 * 방법은 반사, 제네릭 또는 아니오를 통해 이루어집니다. –