我有一个用 Java 编写的带有 AWT GUI 的程序。我的问题是我在这个程序中有很多抽象类(ActionListener)。在这个抽象类中,我需要从主类调用属性。因此,目前我必须将所有需要的属性设置为最终属性。这可不太好。我的问题是如何从主类中调用属性(不将其设置为最终)。更好的代码风格是什么?
例如:
public class mainClass {
TextField field1 = new TextField(10);
(...)
Button connect = new Button("Connecting...");
(...)
connect.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ex) {
methodFromTheMainClass(field1.getText());
// How can I call the method methodFromTheMainClass?
}
});
private void methodFromTheMainClass(String fieldContent) {
(...)
}
}
感谢您的帮助,并对我的英语表示抱歉。 :-/
最佳答案
final
关键字是一个非常好的解决方案几乎在所有可以使用它的地方
就你的情况来说,完全没问题。使用 final
关键字。
但是,如果您强烈希望使字段不是final
(或者由于您的业务逻辑需要),只需创建一个内部(非静态)类,其中包含从本地抽象访问的所有字段类。
这是一个例子:
public class YourClass {
private class Container {
private TextField field = new TextField();
private Button connectButton = new Button("Connecting...");
}
private final Container container = new Container();
private void establishConnection() {
container.connectButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// connection code here
container.field.setText("Connection established"); // access to an inner class
}
});
}
}
关于java - AWT ActionListener 作为抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011432/