and*_*sdr 4 java overloading code-duplication
假设我有一个接受输入的构造函数和另一个使用默认值的构造函数.然后,两个构造函数都以完全相同的方式继续处理这些数据.(以下示例.)在这种情况下,我有哪些选择可以避免代码重复?
(我已经阅读了如何减少构造函数重载代码的帖子,最佳答案建议使用关键字"this".在我的情况下,我想我需要使用"this"从第二个调用第一个构造函数输入存储之后的一个.但是这会导致编译错误:"调用this必须是构造函数中的第一个语句".)
示例代码:
public class A {
public A(String a) {
//process a
}
public A() {
String a = "defaultString";
//process a
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我在类构造函数中使用输入对话框调用需要大量的工作(我知道这不是很好的做法).所以我已经改变了代码示例,以引导讨论远离这个:).
ass*_*ias 10
一种方法是使用init方法:
public class A {
public A(String a) {
init(a);
}
public A() {
String a = "defaultString";
init(a);
}
private void init(String a) {
//process a
}
}
Run Code Online (Sandbox Code Playgroud)
PS:我同意Mike Clark的评论 - 提示用户输入值的行不能移到构造函数之外.
假设我有一个构造函数接受输入,另一个构造函数通过输入对话框请求输入。
不要那样做。从长远来看,这将使代码变得非常复杂且难以维护。至少尝试将 UI 问题(输入对话框等)与您的object模型(您可以string在构造函数中提供)分开。
老实说,你真的不希望这里有一个重载的构造函数。
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |