包含<my reference =“”>的封闭实例是必需的</my>

时间:2010-11-28 16:51:57

标签: java instance

  

包含的封闭实例是必需的

以下是代码。 positionObj是我尝试使用的对象,它给了我上述错误。

目前还不清楚为什么。

package toolBox;
import toolBox.Secretary.positionObj;    

public class PositionManagement {
    public static HashMap<String, Secretary.positionObj> main(String vArg){
        positionObj newPosition=new positionObj();
    }
}

3 个答案:

答案 0 :(得分:119)

您尝试使用非静态内部positionObj类,而没有Secretary的实例属于它。
非静态内部类必须属于其父类的实例

您应该将positionObj更改为普通类或静态内部类。

或者,您可以编写someSecretary.new positionObj()来创建属于someSecretary实例的内部类的实例。

答案 1 :(得分:7)

首先创建一个Outer类的对象。在这种情况下,我认为“秘书”。然后创建positionObj。像这样,

Secretary x = new Secretary();
Secretary.positionObj y = x.new positionObj();

答案 2 :(得分:0)

正确的通用签名是

public static HashMap<String, positionObj> main(String vArg)

你不需要限定positionObj,因为你已经导入了它。

但是,我很确定主要方法必须符合下面的签名。如果您打算将main作为程序的主要方法,请将签名更改为

 public static void main(String[] args) {...}

您可以创建一个单独的静态方法,该方法返回一个Map并从main调用它。

作为一个注释,所有类都应该以大写字母positionObj开头,应该是PositionObj。