Java Generics AnyType,如何允许调用任何方法?
Java Generics AnyType, how do I allow any method to be called?
鉴于:
public<?> void methodName(? input){
var something = ?.GetItNow();
}
我们有大量的 类 是从 WSDL 自动生成的。几乎所有的方法都有相同的方法,但是没有办法让它们为这些相同的方法实现一个接口。假设所有这些不同的 类 都有一个名为 GetItNow() 的方法。我的问题是如何设置通用方法以允许上面的代码工作?
当使用“?”时我必须始终使用 "extends" 关键字吗?如果是这样,我该如何扩展任何对象,这样我就不会看到“方法不存在”的编译错误。
请注意,上面的代码仅用于说明目的,尚未执行任何操作。
您可以使用反射来访问该方法,前提是事先知道名称。
public void methodName(Object input){
try{
Method method = input.getClass().getMethod("GetItNow");
RETURN_TYPE returnValue = (RETURN_TYPE)method.invoke(input);
}catch(Exception e){
throw new RuntimeException("Error while invoking method",e);
}
}
鉴于:
public<?> void methodName(? input){
var something = ?.GetItNow();
}
我们有大量的 类 是从 WSDL 自动生成的。几乎所有的方法都有相同的方法,但是没有办法让它们为这些相同的方法实现一个接口。假设所有这些不同的 类 都有一个名为 GetItNow() 的方法。我的问题是如何设置通用方法以允许上面的代码工作?
当使用“?”时我必须始终使用 "extends" 关键字吗?如果是这样,我该如何扩展任何对象,这样我就不会看到“方法不存在”的编译错误。
请注意,上面的代码仅用于说明目的,尚未执行任何操作。
您可以使用反射来访问该方法,前提是事先知道名称。
public void methodName(Object input){
try{
Method method = input.getClass().getMethod("GetItNow");
RETURN_TYPE returnValue = (RETURN_TYPE)method.invoke(input);
}catch(Exception e){
throw new RuntimeException("Error while invoking method",e);
}
}