使用反射和泛型时警告

Rai*_*ter 3 java generics reflection

我该如何重写:

<T> T callMethod(String methodName, Object[] parameters) throws ... {
    ...
    return (T) SomeClass.class.getDeclaredMethod(methodName, parameterTypes).invoke(binding, parameters);
}
Run Code Online (Sandbox Code Playgroud)

所以它不会产生警告

warning: [unchecked] unchecked cast
        return (T) SomeClass.class.getDeclaredMethod(methodName, parameterTypes).invoke(binding, parameters);
required: T
found:    Object
where T is a type-variable:
T extends Object declared in method <T>callMethod(String,Object[])
Run Code Online (Sandbox Code Playgroud)

我的意思是无SupressWarnings解决方案.

And*_*rup 5

我认为你必须忍受这种@SuppressWarnings(...)方法,因为该invoke()方法返回一个Object.请记住,泛型在运行时被擦除,并且反射在运行时发生......

干杯,