原因是什么 - 在尝试实例化一个类时出现an enclosing instance that contains
?
以下是我的实际代码:
public static void main(String[] args) {
InterspecTradeItems_Type.Item_Type item = new InterspecTradeItems_Type.Item_Type();
// Error: an enclosing instance that contains InterspecTradeItems_Type.Item_Type is required
}
public class InterspecTradeItems_Type {
public class Item_Type {
}
}
感谢。
答案 0 :(得分:2)
由于Item_Type
类不是静态嵌套类,而是内部类InterspecTradeItems_Type
,因此需要后者的实例才能访问前者。
因此,要创建内部类的实例,您应该创建封闭类的实例:
new InterspecTradeItems_Type().new Item_Type();
当然,另一个选择是让Item_Type
成为static
类:
public class InterspecTradeItems_Type {
public static class Item_Type {
}
}
然后你的代码就可以了。
答案 1 :(得分:2)
由于Item_Type
是内部类。要实例化内部类,必须首先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:
InterspecTradeItems_Type.Item_Type item = new InterspecTradeItems_Type()。new Item_Type();
答案 2 :(得分:1)
假设InterspecTradeItems_Type
在名为Main
的类中声明/定义,则需要
InterspecTradeItems_Type.Item_Type item = new Main().
new InterspecTradeItems_Type().new Item_Type();
你有一个内部类和内部类。你需要一个每个外部类的实例来实现它。
答案 3 :(得分:0)
要实例化内部类,必须首先实例化外部类。然后,使用以下语法在外部对象中创建内部对象:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
因此,要么使用上述语法,要么使Item_Type
类静态
public static void main(String[] args) {
InterspecTradeItems_Type.Item_Type item = new InterspecTradeItems_Type.
Item_Type();
// Error: an enclosing instance that contains
InterspecTradeItems_Type.Item_Type is required
}
public class InterspecTradeItems_Type {
public static class Item_Type {
}
}
阅读内部课程docs以获取更多信息。
答案 4 :(得分:0)
试
public static void main(String[] args) {
InterspecTradeItems_Type item = new InterspecTradeItems_Type();
Item_Type item1 = item.new Item_Type();
}
答案 5 :(得分:0)
拥有内部类对象的正确方法是
InterspecTradeItems_Type.Item_Type item = new InterspecTradeItems_Type.new Item_Type();