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;
    }

}

08-03 17:39