无法创建类的实例

时间:2013-09-26 12:33:49

标签: java

原因是什么 - 在尝试实例化一个类时出现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 {

    }
}

感谢。

6 个答案:

答案 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();