在我看来,构造函数可以共享相同的代码,例如:
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 (Int m),由所有的构造函数调用?
ps:我称{foo = 5;}为“公共代码”,但我想这个特性还有另一个官方名称吗?
编辑(1):
编辑(2):
现在,我想知道实现我所要求的目标的唯一方法是否是使用继承来强制使用特定的构造函数。
发布于 2013-11-09 03:17:22
通过调用this()
并匹配参数列表,可以从其他构造函数调用构造函数。
说我有:
Foo(int a, int b) {
// some code..
}
但我也想打个电话:
Foo(int a, int b, int c) {
// some other code
}
我想这样说:
Foo(int a, int b) {
this(a, b, 0);
// Whatever other code you want in this constructor.
}
发布于 2013-11-09 03:34:47
您需要了解Java是如何创建对象的!
class A{
private String b = "b";
private static String a = "a";
{
b = "b2";
}
static{
a = "a2";
}
public A()
{
b = "b3";
}
}
所以我们的想法是当你创建一个
new A();
第一个
private static String a = "a";
之后
static{
a = "a2";
}
之后
private String b = "b";
之后
{
b = "b2";
}
只在之后
public A()
{
b = "b3";
}
但是要注意静态变量和静态块的优先级是相同的。正态变量和块的优先级也是一样的。所以如果你把下一个代码
static{
a = "a2";
}
在此之后
private static String a = "a";
您将忽略块中的代码,因为您在声明前使用了变量!正常变量也是如此!
https://stackoverflow.com/questions/19871949
复制相似问题