Java新手......
我有一个名字类:
private String firstName;
private String middleInitial;
private String lastName;
Run Code Online (Sandbox Code Playgroud)
作为其实例变量.
如果我有某些只有firstName和lastName的数据,没有middleInitial,我怎样才能使构造函数只使用2个参数而不是3个?
mat*_*t b 10
您只需编写一个包含两个参数的构造函数和一个包含三个参数的构造函数
public YourClass(String firstName, String lastName) {
...
}
public YourClass(String firstName, String middleInitial, String lastName) {
...
}
Run Code Online (Sandbox Code Playgroud)
然后,调用者可以根据需要选择使用适当的构造函数.
那么,有两个选择:
middleInitial作为后者的示例,使用空字符串作为默认的中间首字母:
public Person(String firstName, String middleInitial, String lastName)
{
this.firstName = firstName;
this.middleInitial = middleInitial;
this.lastName = lastName;
}
public Person(String firstName, String lastName)
{
this(firstName, "", lastName);
}
Run Code Online (Sandbox Code Playgroud)
然而,编译器将需要知道你在哪一个调用从调用点.所以你可以这样做:
new Person("Jon", "L", "Skeet");
Run Code Online (Sandbox Code Playgroud)
要么
new Person("Jon", "Skeet");
Run Code Online (Sandbox Code Playgroud)
......但你做不到:
// Invalid
new Person(firstName, gotMiddleInitial ? middleInitial : ???, lastName);
Run Code Online (Sandbox Code Playgroud)
并期望编译器决定使用"两个名称"变体.
| 归档时间: |
|
| 查看次数: |
21388 次 |
| 最近记录: |