【问题标题】:No enclosing instance of type fbMain is accessible. Must qualify the allocation with an enclosing instance of type fbMain [duplicate]无法访问 fbMain 类型的封闭实例。必须使用 fbMain 类型的封闭实例来限定分配 [重复]
【发布时间】:2012-03-24 10:08:55
【问题描述】:

所以在声明为“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,我认为这是我的主要问题。

【问题讨论】:

  • 你忘了给我们看pcb类。

标签: java


【解决方案1】:

你没有给出所有相关代码,但是错误提示pcbfbMain的内部类:

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

您可以通过将pcb 设为静态来修复此错误:

 public static class pcb {
 }

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

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

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

【讨论】:

    【解决方案2】:

    像这样将static 添加到你的类声明中

    public static class pcb...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-12
      • 2013-02-17
      • 2011-12-15
      • 2016-11-20
      • 2013-04-11
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多