[关闭]
@ghimi 2018-05-25T00:44:51.000000Z 字数 666 阅读 2026

Java提示错误"No enclosing instance of type"

Java 异常


  1. No enclosing instance of type BinarySearch is accessible. Must qualify the allocation with an enclosing instance of type BinarySearch (e.g. x.new A() where x is an instance of BinarySearch).

没有可以获取到的实例类BinarySearch,务必确认BinarySearch中有关联的实例.
出现这个错误的原因是在类的静态方法中调用了属于该类的成员内部类.
而静态方法是不能够直接调用成员(实例)对象的,因此如果想要在静态方法中调用内部类的话必须将该类声明为静态内部类,即使用静态方法调用静态内部类类即可.


错误示例:

  1. public class Main {
  2. class Dog {
  3. private String name;
  4. public Dog(String name, int weight) {
  5. this.name = name;
  6. }
  7. }
  8. public static void main(String[] args) {
  9. Dog d1 = new Dog("dog1", 1);
  10. }
  11. }

出现这个错误的时候,我一直不太理解。在代码中,我的Dog类是定义在Main中的内部类。Dog内部类是动态的内部类,而我的main方法是static静态的,就好比静态的方法不能调用动态的方法一样。
有两种解决办法:
第一种:将内部类Dog定义成静态static的类。
第二种: 将内部类Dog在Main类外边定义。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注