相关疑难解决方法(0)

当简单名称和完全限定名称冲突时如何引用类

考虑以下病理示例:

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在同一个班级中提到我们都知道和喜欢的东西呢?我们无法导入它,并且我们不能使用完全限定名称,因为将使用嵌套类符号.

在这种情况下我们能做些什么?(除了明显的 - 停止使用嵌套类的这些肆无忌惮的邪恶名称).

java language-specifications

12
推荐指数
1
解决办法
411
查看次数

在内部类类型上使用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
Run Code Online (Sandbox Code Playgroud)

错误在内部类"Par"的方法equals()中.

NetBeans说错误是"非法泛型类型的instanceof".错误在下面的行中.

            if(ob instanceof Par) {
Run Code Online (Sandbox Code Playgroud)

错误的原因是什么?

java instanceof inner-classes

4
推荐指数
1
解决办法
5788
查看次数