【发布时间】:2011-03-29 22:20:30
【问题描述】:
我有一个类 A 并且 BM 扩展了 A。现在我想要使用 eclipse 的代码生成选项创建一个 B 的构造函数,它接受参数并设置 B 的所有字段的值(我的意思是它还应该设置从 A 继承的字段)。
有什么捷径可以在eclipse中生成这样的代码吗?
【问题讨论】:
标签: java eclipse code-generation
我有一个类 A 并且 BM 扩展了 A。现在我想要使用 eclipse 的代码生成选项创建一个 B 的构造函数,它接受参数并设置 B 的所有字段的值(我的意思是它还应该设置从 A 继承的字段)。
有什么捷径可以在eclipse中生成这样的代码吗?
【问题讨论】:
标签: java eclipse code-generation
Eclipse (3.5) 没有针对这种特殊情况的内置选项,但无论如何我建议您在超类中有一个单独的构造函数,子类通过super(...) 调用它在它的构造函数中。
这会更容易维护。例如,如果您在超类中添加一个文件,您需要记住也要更新子类。
class A {
int i;
public A(int i) { this.i = i; }
}
class B extends A {
int j;
public B(int i, int j) {
super(i);
this.j = j;
}
}
【讨论】:
在编辑器中右击,点击“Source -> Generate Constructor using Fields”。您可以选择要使用的超级构造函数,也可以选择要添加到构造函数的实例变量。
【讨论】:
没有自动的方法可以做到这一点,我几乎相信 eclipse 团队是故意这样做的,因为它会导致糟糕的设计。
构造一个类只是关于初始化对象拥有字段。如果需要在超类上设置(init)字段,调用超类构造函数,如果需要更改超类字段,调用超类getter和setter方法。
对我来说,初始化超类字段的设计很糟糕,可以很容易地避免。
【讨论】: