实现。
一个方法signal
应该采取
- 任何对象
N
- 任何对象的父类(super class)
Class<?super N>
<N>void
signal(N n, Class<?super N> n_super)
{
/*...*/
}
打电话应该没问题
Object object=new Object();
signal(object, object.getClass());
自 Object
是 object
的父类(super class)型。但调用它会产生警告。用 IDE 的话来说:
IntelliJ(Android Studio)
Wrong 2nd argument type. Found
Class<? extends Object>
, required:Class<? super Object>
eclipse
The method
signal(N, Class<? super N>)
is not applicable for the arguments(Object, Class<? extends Object>)
问题。
- 我尝试的方式能否实现目标,如果可以,
- 如何消除警告
最佳答案
将我的评论转化为答案。
我很快就能想到的两种方法:
<小时/>直接在此处使用Object.class
。 signal(object, Object.class);
在我的 java 版本上编译正常,没有警告。
将方法签名更改为:
<N, M extends N> void signal(N n, Class<? super M> n_super)
这应该让您可以按照现有的方式调用它(如signal(object, object.getClass());
)。
关于java - 采用对象及其任何父类(super class)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60418798/