gpt4 book ai didi

java - 在其 getter 中调用数据成员的 setter

转载 作者:行者123 更新时间:2023-11-29 07:01:06 25 4
gpt4 key购买 nike

这个问题有点链接到另一个 question我在这个论坛问过。

这就是我想要完成的。我有以下类(class):

public class LoginPage
{
// Class Data
private HtmlForm loginForm;

// Calling the constructor of the parent class
public LoginPage()
{
loginForm = null;
}

public void setLoginForm()
{
...... logic to find the login form ........
}

public HtmlForm getLoginForm()
{
return loginForm;
}

...... other login related methods ........
}

我想确保每次调用 getLoginForm() 方法时它都不应返回 null。 一种方法是确保在调用 getLoginForm() 方法之前调用 setLoginForm()打电话。

我可以在其 getter 方法中调用数据成员的 setter 吗? 在这种情况下:

    public HtmlForm getLoginForm()
{
setLoginForm()
return loginForm;
}

我从来没有见过这样的事情被实践过。 这有效吗?这样做的优缺点是什么?

感谢您的意见/建议!!!!

最佳答案

通常的模式是这样的:

public class LoginPage {

// Class Data
private HtmlForm loginForm;

// Calling the constructor of the parent class
public LoginPage() {
loginForm = null;
}

// Normal setter - NB: Private - so I am in complete control.
private void setLoginForm(HtmlForm loginForm) {
this.loginForm = loginForm;
}

private void initialiseLoginForm() {
if ( loginForm == null ) {
// Build a loginForm and use the private setter to set it.
// NB: In a multi-threaded environment you would normally use some kind of synchronization.
HtmlForm newForm;
// ...
setLoginForm(newForm);
}
}

// Normal getter
public HtmlForm getLoginForm() {
initialiseLoginForm();
return loginForm;
}

}

这会延迟创建表单并禁止用户修改它。请注意,我为 setter 使用了正确的签名,通常是 setXxx(T it)

关于java - 在其 getter 中调用数据成员的 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25998403/

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