public final Class MoneyI implements Money {
public MoneyI(int a, Currency b) {
}
public MoneyI(int a, String b) {
b= b.equals("A")?"B":b;
this(a, Currency.getInstance(b));
}
}
显然,第二个构造函数将引发错误,指出这应该是构造函数调用中的第一个语句。
然后如何在通话前修改字符串?我无法执行
new moneyI(a, Currency.getInstance(b))
,因为它将创建MoneyI的新实例,并且不会在同一调用中进行修改。 最佳答案
您不能简单地在构造函数调用之前不更改字符串本身,而可以在调用本身中发送“正确的”值(然后,如果仍然需要修改参数,则可以这样做):
public final Class MoneyI implements Money {
public MoneyI(int a, Currency b) {
}
public MoneyI(int a, String b) {
this(a, Currency.getInstance(b.equals("A") ? "B" : b));
b = b.equals("A") ? "B" : b;
}
}