采用 Object 及其任何超类的方法
Method taking an Object and any of its superclasses
实现。
一个方法signal
应该采用
- 任何对象
N
- 对象的任何 超类
Class<?super N>
<N>void
signal(N n, Class<?super N> n_super)
{
/*...*/
}
打电话应该就可以了
Object object=new Object();
signal(object, object.getClass());
因为 Object
是 object
的超类型。但是调用它会给出 警告。在IDE话中:
IntelliJ(Android工作室)
Wrong 2nd argument type. Found Class<? extends Object>
, required: Class<? super Object>
日食
The method signal(N, Class<? super N>)
is not applicable for the arguments (Object, Class<? extends Object>)
问题。
- 能否实现目标,我试过的方式,如果可以,
- 警告如何消除
使用这样的东西:
Object object=new Object();
Class c = object.getClass();
signal(object, c);
将我的评论变成答案。
我很快想到的两种方法:
这里直接使用Object.class
。 signal(object, Object.class);
编译正常,在我的 java 版本上没有警告。
将您的方法签名更改为:
<N, M extends N> void signal(N n, Class<? super M> n_super)
这应该让你按照你现在的方式来称呼它(如 signal(object, object.getClass());
)。
实现。
一个方法signal
应该采用
- 任何对象
N
- 对象的任何 超类
Class<?super N>
<N>void
signal(N n, Class<?super N> n_super)
{
/*...*/
}
打电话应该就可以了
Object object=new Object();
signal(object, object.getClass());
因为 Object
是 object
的超类型。但是调用它会给出 警告。在IDE话中:
IntelliJ(Android工作室)
Wrong 2nd argument type. Found
Class<? extends Object>
, required:Class<? super Object>
日食
The method
signal(N, Class<? super N>)
is not applicable for the arguments(Object, Class<? extends Object>)
问题。
- 能否实现目标,我试过的方式,如果可以,
- 警告如何消除
使用这样的东西:
Object object=new Object();
Class c = object.getClass();
signal(object, c);
将我的评论变成答案。
我很快想到的两种方法:
这里直接使用Object.class
。 signal(object, Object.class);
编译正常,在我的 java 版本上没有警告。
将您的方法签名更改为:
<N, M extends N> void signal(N n, Class<? super M> n_super)
这应该让你按照你现在的方式来称呼它(如 signal(object, object.getClass());
)。