Java Generics AnyType,如何允许调用任何方法?

问题描述 投票:1回答:1

鉴于:

public<?> void methodName(? input){
  var something = ?.GetItNow();
}

我们有很多类是从WSDL自动生成的。几乎所有这些方法都有相同的方法,但没有办法让它们为这些方法实现接口。假设所有这些不同的类都有一个名为GetItNow()的方法。我的问题是如何设置Generic方法以允许上面的代码工作?

使用“?”时我是否必须始终使用“扩展”关键字?如果是这样,我如何扩展任何对象,所以我没有看到“方法不存在的编译错误。

请注意,上面的代码仅用于说明目的,但尚未执行任何操作。

java generics wildcard
1个回答
2
投票

如果事先知道名称,则可以使用反射来访问该方法。

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.