【发布时间】:2012-07-19 23:44:24
【问题描述】:
在下面的代码示例中,我应该给变量label 提供什么修饰符?
我是 Java 新手,但我想做的第一件事就是分解出我可以在 swing 中使用的所有类,比如 JLabel 并制作它,以便我可以动态调用它们。我希望我在下面做到了。但是,是的,我不确定private static JLabel label;,因为最终我希望能够在某处的主文件中声明所有摇摆类。谢谢。
package base;
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class CreateLabel extends JLabel {
private static final long serialVersionUID = 1L;
private static JLabel label;
public Component createLabel(JFrame frame, String text) {
label = new JLabel(text);
return frame.getContentPane().add(label);
}
}
【问题讨论】:
-
如果您打算从另一个类初始化它,那么只公开和静态就可以了。您可以使用 setter 方法,但它相当没有意义。
-
为什么
CreateLabel扩展JLabel?看起来您将继承与 Builder 模式混淆了 -
我的第一个问题是为什么?你为什么要扩展 JLabel 来做到这一点?你打算创建一个工厂类吗?那么你会希望 createlabel 不扩展任何东西,是最终的,并且 createLabel 方法是静态的。理想情况下,您也永远不会引用它...
-
为什么
createLabel需要存储在CreateLabel的label中? -
忽略@tommo 的评论。除了常量之外,我在这里看不到任何应该是静态的。