gpt4 book ai didi

java - 从构造函数调用方法

转载 作者:行者123 更新时间:2023-11-30 06:14:46 26 4
gpt4 key购买 nike

我已经尝试研究这个问题,但我是初学者,不确定它的措辞是否正确,所以如果这不是一个好问题,我很抱歉。

我正在为项目中的一个选项卡式 Pane 创建一个 CustomerGUI 类,并从主 GUI 类调用它。我想知道的是,当我创建CustomerGUI对象时,是否可以从构造函数中调用createGUI方法?这样我只需要写 tabbedPane("Customers", new CustomerGUI());

或者写 tabbedPane("Customers", new CustomerGUI().createGUI); 会更好吗? ?

哪个最好?

public class CustomerGUI {

public CustomerGUI() {

}

public JPanel createGUI() {
JPanel panelCustomersMain = new JPanel(new BorderLayout());
JPanel panelCustomersMainGrid = new JPanel(new GridLayout(1, 2));
...

或者

public class CustomerGUI {

public CustomerGUI() {
createGUI();
}

public JPanel createGUI() {
JPanel panelCustomersMain = new JPanel(new BorderLayout());
JPanel panelCustomersMainGrid = new JPanel(new GridLayout(1, 2));
...

据我了解,如果我错了,请纠正我,构造函数用于为该类的实例设置变量。但是,在我的 CustomerGUI 类中,我没有任何需要设置的变量,并且我使用构造函数作为启动其他方法(例如 main 方法)的入口点。我只是想知道这是否不是一个好的做法。

最佳答案

事实上,答案取决于您的客户端类如何使用 CustomerGUI实例。

  • 案例1

客户端类实例化是否有意义 CustomerGUI一次并在稍后有效地创建内部组件,提供公共(public) createGUI()方法有道理。这是根据客户需求进行的惰性初始化。
请注意,带有 void 的命名返回如void initGUI()void init()对客户来说更有意义并且可能更清楚。
JPanel createGUI()够暧昧的。通过这样的命名,客户端类可能会认为我们可以多次调用它。此外,该方法返回了一些不应该返回的内容。它应该只初始化对象状态。

<小时/>

作为延迟加载的替代方案,您可以简单地使用 Supplier<CustomerGUI>来自客户类。通过这种方式,该对象仅被有效地创建为 Supplier.get()被调用。

<小时/>
  • 案例2

另一方面,如果实例化 CustomerGUI 的客户端类总是需要将其所有组件初始化为 createGUI()甚至不应该是公共(public) API,它应该定义为 private并由构造函数调用。

关于java - 从构造函数调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455759/

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