no enclosing instance of type
时间: 2023-04-29 08:03:59 浏览: 84
"no enclosing instance of type" 是一个编译错误,通常是由于在非静态内部类中引用了外部类的静态成员导致的。为了访问外部类的静态成员,应该在外部类名前加上 "类名." 的形式来访问。
相关问题
No enclosing instance of type AbsAnimal is accessible. Must qualify the allocation with an enclosing instance of type AbsAnimal (e.g. x.new A() where x is an instance of AbsAnimal).
这个错误通常发生在内部类中创建实例时,没有指定外部类的实例。具体来说,如果你在外部类AbsAnimal中定义了一个非静态的内部类,比如说叫做InnerAnimal,那么在InnerAnimal类中创建AbsAnimal的实例时,需要使用外部类的实例作为限定符。例如:
```
public class AbsAnimal {
// 外部类AbsAnimal的代码
public class InnerAnimal {
// 内部类InnerAnimal的代码
public void createAbsAnimal() {
AbsAnimal animal = AbsAnimal.this.new Animal(); // 使用外部类实例作为限定符
// 其他操作
}
}
}
```
在上面的代码中,使用`AbsAnimal.this`作为限定符来创建AbsAnimal的实例。这样就可以避免"No enclosing instance of type AbsAnimal is accessible"这个错误了。
No enclosing instance of type shiyan1 is accessible. Must qualify the allocation with an enclosing instance of type shiyan1
这个错误的原因是你在创建一个内部类的实例时,没有提供外部类的实例。如果你想要在外部类的方法中创建内部类的实例,你需要使用外部类的实例来创建。例如:
```
public class Shiyan1 {
public class InnerClass {
public InnerClass() {
// 内部类的构造函数
}
}
public void createInnerClass() {
InnerClass inner = new InnerClass(); // 使用外部类的实例创建内部类的实例
}
}
```
在这个例子中,如果你只是在外部类的方法中创建内部类的实例,你需要使用外部类的实例来创建。如果你在其他类中创建内部类的实例,你需要先创建外部类的实例,然后使用它来创建内部类的实例。例如:
```
public class OtherClass {
public void createInnerClass() {
Shiyan1 outer = new Shiyan1();
Shiyan1.InnerClass inner = outer.new InnerClass(); // 使用外部类的实例创建内部类的实例
}
}
```
这样就能解决这个错误了。