如何在java中使用构造函数定义最高值?

如何在java中使用构造函数定义最高值?,java,Java,我想用构造函数Salary()初始化一个新对象-Salary。然而,有一个论据附加到它作为“工资” class Salary{ public Salary(String name, long salary){ this.name = name; setSalary(salary); } public void setSalary(long salary){ this.salary = salary;

我想用构造函数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;
}

基于此clas创建新对象薪资时,此初始“薪资”金额(基于构造函数)是它所能拥有的最高薪资金额。显然,我可以使用其他方法,如increaseSalary()来增加工资。或该类中的DecreaseAlary()方法来操作此值。然而,“薪水”的最高值永远不能高于我创建它时传递给它的值。如何实现这个方法

这个怎么样?在构造函数中:

setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除
setSalary()
调用):


请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用
setSalary()

如何?在构造函数中:

setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除
setSalary()
调用):


请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用
setSalary()

如何?在构造函数中:

setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除
setSalary()
调用):


请注意,您可以稍后更改薪资,上面的任何选项都会保留默认值和
long
允许的最大值,但您可以稍后针对特定实例更改它,只需调用
setSalary()

如何?在构造函数中:

setSalary(Long.MAX_VALUE); // here we ignore the `salary` parameter
private long salary = Long.MAX_VALUE;
或者等效地,在属性声明中(但必须从构造函数中删除
setSalary()
调用):


请注意,您可以在以后更改薪资,上述任何选项都会保留默认值和
长薪资所允许的最大值,但您可以在以后针对特定实例进行更改,只需调用
设置薪资()默认值

例如:

private long salary=1_000_000L

请注意下划线文字,以提高整数/长字符的可读性

但是通过更仔细地查看您的代码,我无法完全理解您的问题:


使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。

你想给你的
私人长期工资默认值

例如:

private long salary=1_000_000L

请注意下划线文字,以提高整数/长字符的可读性

但是通过更仔细地查看您的代码,我无法完全理解您的问题:


使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。

你想给你的
私人长期工资默认值

例如:

private long salary=1_000_000L

请注意下划线文字,以提高整数/长字符的可读性

但是通过更仔细地查看您的代码,我无法完全理解您的问题:


使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此,不需要初始值。

你想给你的
私人长期工资默认值

例如:

private long salary=1_000_000L

请注意下划线文字,以提高整数/长字符的可读性

但是通过更仔细地查看您的代码,我无法完全理解您的问题:


使用您当前的构造函数,您总是被迫传递一些工资,因此它永远无法设置。因此不需要初始值。

您可以将其存储在第二个变量中:

class Salary{  

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

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

    private long salary;
    private long maxSalary; // ADD THIS
}

然后,您可以更改
工资
最高工资
将始终是提供给构造函数的原始金额。

您可以将其存储在第二个变量中:

class Salary{  

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

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

    private long salary;
    private long maxSalary; // ADD THIS
}

然后,您可以更改
工资
最高工资
将始终是提供给构造函数的原始金额。

您可以将其存储在第二个变量中:

class Salary{  

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

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

    private long salary;
    private long maxSalary; // ADD THIS
}

然后,您可以更改
工资
最高工资
将始终是提供给构造函数的原始金额。

您可以将其存储在第二个变量中:

class Salary{  

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

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

    private long salary;
    private long maxSalary; // ADD THIS
}

然后您可以更改
salary
,并且
maxSalary
始终是提供给构造函数的原始金额。

您必须将初始值存储在另一个成员中(
max
),并在每次调用
setSalary
时对其进行比较

class Salary {  

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

    public void setSalary(long salary){
        if (salary < max) {
            this.salary = salary;
        } else {
            this.salary = max;
        }
    }

    private long salary;
    private final long max;
}
班级工资{
公共薪资(字符串名称,长薪资){
this.name=名称;
这个.max=工资;
固定工资;
}
公共收入(长期工资){
如果(工资<最大值){
这个。薪水=薪水;
}否则{
这个。薪水=最高;
}
}
私人长期工资;
私人最终长最大值;
}

希望这有帮助。

您必须将初始值存储在另一个成员(
max)中