我正在尝试从ClassB
访问ClassA中定义的内部类Class1ClassB.java
public class 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);
QR[i].Class1 class1obj = QR[i].new Class1();
//prog_QR[i].progressProperty().bind(QR[i].progressProperty());
prog_QR[i].progressProperty().bind(class1obj.progressProperty());
//lab_QR[i].textProperty().bind(QR[i].messageProperty());
lab_QR[i].textProperty().bind(class1obj.messageProperty());
// My other stuff here
}
}
}
ClassA.java
public class ClassA {
public class Class1 extends Task<Integer> {
// Constructor Created
Class1() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
protected Integer call() throws Exception {
// My logic here
}
}
}
在第QR[i].Class1 class1obj = QR[i].new Class1();
行,我在Netbeans中遇到错误
它要么叫我
1)创建课程&#34; Class1&#34;在包mypackage中
2)创建课程&#34; Class1&#34;在mypackage中
我在这里做错了什么?
答案 0 :(得分:2)
声明变量时,变量名左侧的部分必须是类型名称。
QR[i].Class1
不是班级名称。 QR[i]
是数组中的值。数组中的每个值都没有不同的类。你想要:
ClassA.Class1 class1obj = QR[i].new Class1();
我个人试图避免使用内部类,除非你真的需要它们。你的内部类肯定需要是一个内部类而不仅仅是一个嵌套类吗?
此外,您的类声明已被破坏。这些:
public ClassA {
...
public ClassB {
需要:
public class ClassA {
...
public class ClassB {
作为一个完整的例子,这段代码编译得很好:
public class ClassA {
public class Class1 {}
}
public class ClassB {
public ClassA[] QR = new ClassA[1];
public void foo() {
QR[0] = new ClassA();
ClassA.Class1 class1obj = QR[0].new Class1();
}
}