假设我有一个接受输入的构造函数和另一个使用默认值的构造函数。然后,两个构造函数以完全相同的方式继续处理此数据。(示例如下。)在这种情况下,我有什么选择来避免代码重复?
(我读过这篇文章,上面的答案建议使用关键字“how to reduce the code of constructor overloading”。在我的例子中,我想在存储输入之后,我需要使用"this“从第二个构造函数中调用第一个构造函数。然而,这会导致编译错误:“调用This必须是构造函数中的第一条语句”。)
示例代码:
public class A {
public A(String a) {
//process a
}
public A() {
String a = "defaultString";
//process a
}
}
编辑:我因为在类构造函数中使用输入对话框调用而备受指责(我知道这并不是一个好的做法)。因此,我更改了代码示例,以将讨论从以下内容转移:)。
发布于 2012-05-08 05:50:34
一种方法是使用init方法:
public class A {
public A(String a) {
init(a);
}
public A() {
String a = "defaultString";
init(a);
}
private void init(String a) {
//process a
}
}
发布于 2012-05-08 05:54:25
假设我有一个构造函数接受输入,另一个构造函数通过输入对话框请求输入。
别干那事。从长远来看,这将造成可怕的纠缠和难以维护的代码。至少尝试将UI关注点(输入、对话框等)从object
模型(可以在构造函数中提供string
)中分离出来。
在我看来,你真的不想在这里使用一个重载的构造函数()。
发布于 2012-05-08 23:36:50
您可能希望尝试链接您的构造函数:
public class A {
public A(String a) {
//process a
}
public A() {
this("defaultString");
}
}
如果您想使用对话框来获取字符串,我建议您在调用此构造函数之前显示该对话框。
https://stackoverflow.com/questions/10489626
复制相似问题