访问类中存在的类

时间:2014-04-02 17:03:31

标签: java javafx

请考虑以下代码:

我有两个类:ClassA.java和ClassB.java中定义的ClassA和ClassB

初始场景:

我在ClassA中有以下内容:

public class ClassA extends Task<Integer> {
   @Override
        protected Integer call() throws Exception {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }
}

在ClassB.java中,我使用的是A类,如下所示:

public ClassB implements Initializable {

public ClassA[] QR;

@Override
public void initialize(URL url, ResourceBundle rb) {
        for(int i=0; i<1; i++) {
            QR[i] = new ClassA(i);
            // My other stuff here
        }
    }
}

我所做的更改:

我决定在ClassA中使用10个不同的类,如下所示:

public ClassA {

    public class Class1 extends Task<Integer> {
       @Override
            protected Integer call() throws Exception {
                // My logic here
            }
    }

    public class Class2 extends Task<Integer> {
       @Override
            protected Integer call() throws Exception {
                // My logic here
            }
    }

    public class Class3 extends Task<Integer> {
       @Override
            protected Integer call() throws Exception {
                // My logic here
            }
    }

    public class Class4 extends Task<Integer> {
       @Override
            protected Integer call() throws Exception {
                // My logic here
            }
    }

    // and so on until Class10

}// END of ClassA

我的问题:

1)在ClassB.java中,我应该如何访问Class1,Class2直到Class 10,这样我就可以为所有10个类定义如下内容:

@Override
    public void initialize(URL url, ResourceBundle rb) 
    {
      for(int i=0; i<1; i++)
            {
                QR[i] = new ClassA(i); 
                // My other stuff here 
             }
    }

因为如果我打算做以下事情:

`public Class1[] QR1`, then it throws error.

1 个答案:

答案 0 :(得分:0)

我希望oracle docs的这段文字回答你的问题:

  

InnerClass的一个实例只能存在于一个实例中   OuterClass并且可以直接访问其方法和字段   封闭实例。

     

要实例化内部类,必须首先实例化外部   类。然后,使用它在外部对象中创建内部对象   语法:

     

OuterClass.InnerClass innerObject = outerObject.new InnerClass();

例如, QR [i] .Class1 test = QR [i] .new Class1();