不能访问类型为fbMain的封闭实例。必须使用fbMain类型的封闭实例限定分配

时间:2012-03-06 21:14:52

标签: java

所以在我的类中声明为“ public class pcb ”,我有以下构造函数: public pcb(int p,int a,int b)。

public static void main(String [] args)我尝试在for循环中调用构造函数,在其中我将“pcb”添加到数组中的不同位置。这是for循环,最后一行是我得到错误的地方:

for(int i=0; i<numJob; i++){
   pI = scan.nextInt();
   arr = scan.nextInt();
   bst = scan.nextInt();
   notHere[i]=new pcb(pI, arr, bst);
}

我做错了什么?是语法还是我程序的结构。我没有那么多地使用Java,我认为这是我的主要问题。

2 个答案:

答案 0 :(得分:20)

您尚未提供所有相关代码,但错误表明pcbfbMain的内部类:

public class fbMain {
    //...
    public class pcb {
    }
    //...
}

您可以通过pcb静态修复此错误:

 public static class pcb {
 }

或者将类移动到自己的文件中。或者,如果pcb不能是静态的(因为它与fbMain的实例相关联),您可以通过传递pcb的实例来创建新的fbMain

notHere[i] = instanceOfFbMain.new pcb(pI, arr, bst);

这可能是你想要的第一个。另请注意,按照惯例,Java类型名称以大写字母开头。

答案 1 :(得分:3)

static添加到您的类声明中,如下所示

public static class pcb...