0

达到。

一种方法signal应该采取

  1. 任何对象N
  2. 任何对象的超类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(安卓工作室)

第二个参数类型错误。找到Class<? extends Object>,必填:Class<? super Object>

该方法signal(N, Class<? super N>) 不适用于参数(Object, Class<? extends Object>)

问题。

  1. 是否可以实现目标,我尝试过的方式,如果可以,
  2. 如何消除警告
4

2 回答 2

1

将我的评论变成答案。

我能很快想到的两种方法:


在这里直接使用Object.classsignal(object, Object.class);编译良好,我的 java 版本没有警告。


将您的方法签名更改为:

<N, M extends N> void signal(N n, Class<? super M> n_super)

这应该让你以你现在的方式来称呼它(如 中signal(object, object.getClass());)。

于 2020-02-26T17:18:47.707 回答
0

使用这样的东西:

Object object=new Object();
Class c = object.getClass();
signal(object, c);
于 2020-02-26T17:08:08.957 回答