gpt4 book ai didi

java - 错误: asking to create a new class while accessing innerclass

转载 作者:行者123 更新时间:2023-12-02 05:59:08 24 4
gpt4 key购买 nike

我正在尝试从 ClassB 访问 ClassA 中定义的内部类 Class1

ClassB.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) 在包 mypackage 中创建类“Class1”

2)在mypackage中创建类“Class1”

我在这里做错了什么?

最佳答案

声明变量时,变量名称左侧的部分必须是类型名称。

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();
}
}

关于java - 错误: asking to create a new class while accessing innerclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com