在我看来,构造函数可以共享相同的代码,例如:
public class Foo {
private int foo;
{foo = 5;}
public Foo(){}
public Foo(int v){this.foo = v;}
public int getFoo(){return foo;}
}
代码“foo=5;”在两个构造函数中都被调用。
我认为您不能,但我想确认一下。不可能创建使用参数的通用代码吗?
例如,类似于:
public class Foo {
private int foo;
(int m){foo = m*5;}
public Foo(int m){}
public Foo(int v,int m){this.foo = v;}
public int getFoo(){return foo;}
}
据我所知,唯一的方法是创建一个私有的void init(int m)方法,并由所有构造函数调用。
附注:我把{foo = 5;}称为“常见代码”,但我猜这个特性还有另一个官方名称?
编辑(1):
1. 我要找的术语是初始化块。
2. 这个问题与询问构造函数是否也可以调用另一个构造函数不同。因为使用初始化块时,代码是自动调用的,即没有风险调用构造函数并忘记调用它。
3. 我关于使用"void init"的评论不好,实际上在这种情况下调用另一个构造函数更好。
4. 简而言之,我的问题是:初始化块可以接受参数吗?这有点像强制要求实现所有构造函数上的某些参数。
编辑(2):
我现在想知道实现我所要求的唯一方法是使用继承来强制使用特定的构造函数。
this(params p)
жҲ–super()
пјҲз”ЁдәҺзҲ¶зұ»пјүи°ғз”Ёе…¶д»–жһ„йҖ еҮҪж•°гҖӮ - 0x6C38