考虑以下病理示例:
class Ideone {
static class ArrayList<T> {
ArrayList() {
System.out.println("!!");
}
}
static class java {
static class util {
static class ArrayList<T> {
ArrayList() {
System.out.println("Here");
}
}
}
}
public static void main(String[] args) {
new ArrayList<>();
new java.util.ArrayList<>();
// Can I refer to the "usual" java.util.ArrayList?
}
}
Run Code Online (Sandbox Code Playgroud)
在构造函数中创建的两个实例是嵌套类.
但是我怎么能java.util.ArrayList在同一个班级中提到我们都知道和喜欢的东西呢?我们无法导入它,并且我们不能使用完全限定名称,因为将使用嵌套类符号.
在这种情况下我们能做些什么?(除了明显的 - 停止使用嵌套类的这些肆无忌惮的邪恶名称).
我用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
Run Code Online (Sandbox Code Playgroud)
错误在内部类"Par"的方法equals()中.
NetBeans说错误是"非法泛型类型的instanceof".错误在下面的行中.
if(ob instanceof Par) {
Run Code Online (Sandbox Code Playgroud)
错误的原因是什么?