java - 编程技巧: not able to modify variable before constructor call

标签 java string constructor

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

}

关于java - 编程技巧: not able to modify variable before constructor call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38067491/

相关文章:

java - 调用链函数会产生开销吗?

php - 用 "..."主体缩短字符串

android - SQLite没有打开的构造函数错误

c# - 链重载构造函数?

java - Joda Time - 月份的日期和年份的月份不返回 2 位数字输出

java - PropertyPlaceHolderConfigurer 不读取 Tomcat 上下文 XML

string - 如何将 cmdlet 插入到 powershell 中的字符串中

Java在文本中查找字符串不起作用

c++ - 在静态函数中返回一个对象而不是构建它有什么好处?

java - 使用java更改unix文件的组