java如何为特殊情况提供更简单的构造函数
我想知道我所努力实现的目标是否真的可能,我不知道我所做的事情的确切名称,因此我不能真正正确地用谷歌搜索结果,为什么这个主题标题也有点模糊
我的班级:
会计约束。爪哇:
package dao.constraint;
public class AccountConstraint {
private Range<Integer> accountId;
private String username;
private String password;
private String email;
public AccountConstraint(final Range<Integer> accountId, final String username, final String password, final String email) {
this.accountId = accountId;
this.username = username;
this.password = password;
this.email = email;
}
public Range<Integer> getAccountId() {
return accountId;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getEmail() {
return email;
}
}
射程。爪哇:
package dao.constraint;
public class Range<T> {
private T min;
private T max;
public Range(T min, T max) {
this.min = min;
this.max = max;
}
public T getMin() {
return min;
}
public T getMax() {
return max;
}
}
一个完全有效的代码示例是:
AccountConstraint ac = new AccountConstraint(new Range<Integer>(5, 10), null, null, null));
如果您想获取id为5到10的所有帐户。一段仍然有效但更奇怪的代码是:
AccountConstraint ac = new AccountConstraint(new Range<Integer>(3, 3), null, null, null));
如果您想获得id为3的帐户
我想要的是:
AccountConstraint ac = new AccountConstraint(3, null, null, null);
asnew Range<Integer>(3, 3)
理论上等于3
有没有办法做到这一点,可能是通过向Range
类添加代码,我觉得这应该是可能的,但我不知道如何和/或从哪里开始
# 1 楼答案
您可以尝试以下方法(创建新的重载构造函数):
# 2 楼答案
创建更多构造函数:
# 3 楼答案
创建这样的构造函数。将值传递给构造函数
# 4 楼答案
您可以更改Range类以添加单个参数构造函数:
并在单独的AccountConstraint构造函数中调用该构造函数
顺便说一句,您的Range类可能受益于某些类型边界:
# 5 楼答案
您不需要对
Range
类做任何事情,只需提供另一个AccountConstraint
构造函数,它从一个int
中生成一个Range
:# 6 楼答案
添加以整数作为第一个参数的构造函数,并使用它创建一个范围: