我应该在申请表中声明摆动组件吗?

时间:2016-06-03 15:05:13

标签: java swing junit awt software-design

在我的应用程序中,我有很多摆动组件。 我应该在我的类中使这些组件变量最终,然后在构造函数中实例化,或者我应该直接实例化它们而不使它们成为最终的。

public class MyClass 
{
    private final JFrame firstFrame;
    private final JPanel firstPanel;
    private final JButton firstButton;

    public MyClass()
    {
        firstFrame = new JFrame();
        firstPanel = new JPanel();
        firstJButton = new JButton();
    }
}

这种方法更好地考虑了设计和优化,或者下面的方法更好。

public class MyClass
{
    public void createGUI()
    {
        private JFrame firstFrame = new JFrame();
        private JPanel firstPanel = new JPanel();
        private JButton firstJButton = new JButton();
    }
}

2 个答案:

答案 0 :(得分:2)

如果您不打算多次初始化摇摆组件 ,则可以使用最终修饰符将其清除。这样可以防止重新分配组件。

您不能在方法范围内拥有私有修饰符,方法范围中允许的唯一修饰符是最终修饰符。例如:

public class MyClass
{
    public void createGUI()
    {
        final JFrame firstFrame = new JFrame();
        final JPanel firstPanel = new JPanel();
        final JButton firstJButton = new JButton();
    }
}

但是,我更喜欢这个例子:

public class MyClass 
{
    private final JFrame firstFrame;
    private final JPanel firstPanel;
    private final JButton firstButton;

    public MyClass()
    {
        firstFrame = new JFrame();
        firstPanel = new JPanel();
        firstJButton = new JButton();
    }
}

这将确保无法重新分配组件,并且还提供对组件的实例范围访问,而在第一个示例中,范围仅限于方法createGUI()的范围。

希望这有帮助。

答案 1 :(得分:1)

如果您知道类中定义的所有实例变量将在构造函数中初始化并且不会更改,则应选择final修饰符。

如果您的实例变量未在类外访问,则可以声明private

您的第一个代码段是完美的,但第二个代码片段甚至无法编译。