如何减少Java构造函数的重复性和膨胀?
我希望避免定义“C-struct-like”类时重复的代码膨胀和键入繁琐,如:如何减少Java构造函数的重复性和膨胀?,java,eclipse,Java,Eclipse,我希望避免定义“C-struct-like”类时重复的代码膨胀和键入繁琐,如: class Foo { int x; float y; String z; public Foo(int x, float y, String z) { this.x = x; this.y = y; this.z = z; } } ??例如,这里有什么Eclipse技巧可能有用吗 要了解我所说的“代码膨胀”是什么意思,请将上述
class Foo {
int x;
float y;
String z;
public Foo(int x, float y, String z) {
this.x = x;
this.y = y;
this.z = z;
}
}
??例如,这里有什么Eclipse技巧可能有用吗
要了解我所说的“代码膨胀”是什么意思,请将上述内容与在C中定义相应结构所需的内容进行比较:
struct foo {
int x;
float y;
char *z;
}
每个成员字段只被提及一次,而在Java代码中它需要被提及三次(其中一次以相应的构造函数参数的形式出现)。不幸的是,在Java中,如果要在构造函数中初始化这些值,就无法绕过这一点。如果您对另一种JVM语言开放,Scala有一个解决方案
编辑:您可以将所有字段公开。理论上,这是个坏主意。实际上,有时它是正确的解决方案。在eclipse中,您可以右键单击java编辑器中的source->generate constructors using fields。
我想这就是您想要的。Eclipse在源代码菜单中有一个“使用字段生成构造函数…”。您也可以在Java中这样做,但这违反了基本的OOP原则:
class Foo {
public int x;
public float y;
public String z;
}
另一类:
Foo foo = new Foo();
foo.x = 1;
// etc..
就像C
s结构一样:
struct Foo {
int x;
float y;
char *z;
};
struct Foo foo;
foo.x = 1;
// etc...
是的,但是在C语言中你不能隐藏那些成员。封装的代价有时是冗长的。(如果您不想隐藏它们,那么即使在Java中也不需要冗长。)如果您的字段是public或package private,并且不是final,那么您真的需要一个设置它们的构造函数吗?您可以在代码< Foo> <代码>实例化之后设置它们。此外,C++代码不生成构造函数。谢谢DLV从WAT->纠正我的“文本LINO”。我会处理的!是的,这就是路。使用此快捷方式,您只需键入所需的三行,其余的由eclipse处理。还有一个快捷键:Alt+Shift+S,O