我想初始化一个新对象-带构造函数salary()的Salary。但是,有一个参数附加为“工资”。

class Salary{

    public Salary(String name, long salary){
        this.name = name;
        setSalary(salary);
    }

    public void setSalary(long salary){
    this.salary = salary;
    }

    private long salary;
}


当基于此分类创建新的对象薪水时,“薪金”的初始金额(基于构造函数)是它可以拥有的最高薪水金额。显然,我可以使用其他方法,例如creaseSalary()来增加薪水。或此类中的方法reduceSalary()可以操纵该值。但是,“工资”的最高值永远不会高于创建该工资时传递给它的值。如何实现这种方法?

最佳答案

不知道这是否能回答问题,但是通常在我想要将某一个参数默认为某项的情况下设置多个构造函数(在这种情况下,这是可能的最高薪水)。我将默认值定义为私有常量。

public class Salary {
    private static final long MAX_SALARY = Long.MAX_VALUE;
    private final String name;
    private final long salary;

    /**
      * Create highest possible salary of the given name
      */
    public Salary(String name) {
        this(name, MAX_SALARY);
    }

    /**
      * Create a Salary of the given name and value
      */
    public Salary(String name, long salary) {
        this.name = name; // TODO add null and integrity checks
        this.salary = salary;
    }
}

关于java - 如何在Java中使用构造函数定义最大值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22568247/

10-16 03:03