“instanceof 的非法泛型类型”在内部类类型上使用instanceof时?
我在 NetBeans 中编写了如下代码:
public class Grafo<V, E>
{
class Par
{
int a, b;
Par(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object ob)
{
if(ob instanceof Par) {
Par p = (Par)ob;
return this.a==p.a && this.b==p.b;
}
return false;
}
}
//stuff...
} //end of class Grafo
错误出在内部类“Par”的方法 equals() 中。
NetBeans 表示错误是“instanceof 的泛型类型非法”。错误在下面一行。
if(ob instanceof Par) {
错误的原因是什么?
I coded in NetBeans something like this:
public class Grafo<V, E>
{
class Par
{
int a, b;
Par(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public boolean equals(Object ob)
{
if(ob instanceof Par) {
Par p = (Par)ob;
return this.a==p.a && this.b==p.b;
}
return false;
}
}
//stuff...
} //end of class Grafo
The error is in the method equals() from inner class "Par".
NetBeans says that the error is "illegal generic type of instanceof". The error is in the line below.
if(ob instanceof Par) {
What is the cause of the error ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试
ob instanceof Grafo.Par
我认为编译器认为
ob instanceof Par
涉及对泛型类型参数的运行时检查;即它相当于ob instanceof Grafo.Par
。但是instanceof
测试无法检查泛型类型参数。Try
ob instanceof Grafo<?,?>.Par
I think that the compiler thinks that
ob instanceof Par
involves a runtime check on generic type parameters; i.e. that it is equivalent toob instanceof Grafo<V,E>.Par
. Butinstanceof
tests cannot check generic type parameters.或者定义你的内部类
static
Or define your inner class
static