no enclosing instance of type
时间: 2023-04-29 10:03:59 浏览: 175
"no enclosing instance of type" 是一个编译错误,通常是由于在非静态内部类中引用了外部类的静态成员导致的。为了访问外部类的静态成员,应该在外部类名前加上 "类名." 的形式来访问。
相关问题
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(); // 使用外部类的实例创建内部类的实例
}
}
```
这样就能解决这个错误了。
No enclosing instance of type cbs is accessible. Must qualify the allocation with an enclosing instance of type 是什么问题
这个错误提示"No enclosing instance of type cbs is accessible"在Java中表示你在尝试创建一个属于`cbs`类的内部类(如上文提到的`Animal`),但是当前上下文中并没有引用到任何一个`cbs`类的具体实例。由于内部类需要外部类的实例作为其作用域,因此你需要提供一个`cbs`类的实例来创建`Animal`对象。
比如,在`main`方法之外,如果你想要正确地创建`Animal`对象,你需要这样做:
```java
public class Main {
public static void main(String[] args) {
// 创建一个cbs类的实例
cbs cbsInstance = new cbs();
// 现在可以在cbsInstance的作用域内创建Animal对象
cbsInstance.new Animal("李四");
}
}
class cbs {
// ... 内部类代码 ...
}
```
在这个例子中,`Main`类负责创建`cbs`的实例,然后你可以使用这个实例来创建`Animal`对象。
如果你是在匿名内部类、lambda表达式或者方法中遇到这个问题,可能是因为你试图在那些无法创建`cbs`实例的地方创建`Animal`,此时就需要明确指定一个外部`cbs`实例。
阅读全文
相关推荐

















