我想问你是否可以在Java中在接口中声明一个方法但是,我希望定义的方法可以有可变数量的输入参数(例如,所有相同的类型).我在考虑这样的事情:
public interface EqualsCriteria {
public boolean isEqual(String... paramsToCheck);
// this is not equals(Object obj) !!!
}
Run Code Online (Sandbox Code Playgroud)
并且一个类实现了相同的标准,例如:
public class CommonEquals implements EqualsCriteria {
private String name;
private String surname;
....
@Override
public boolean isEqual(String otherName, String otherSurname) {
return name.equals(otherName) && surname.equals(otherSurname);
}
}
Run Code Online (Sandbox Code Playgroud)
但也许,我想在代码的另一部分中使用其他标准,就像这样
public class SpecialEquals implements EqualsCriteria {
....
@Override
public boolean isEqual(String otherName, String otherSurname, String passport) {
return name.equals(otherName) && surname.equals(otherSurname) && passport.equals(passport);
}
}
Run Code Online (Sandbox Code Playgroud)
PS:其实我的问题有点复杂,但这对我有用.
更好的方法是:
public interface EqualsCriteria {
public boolean isEqual(EqualsCriteria other);
public String[] getParam();
// this is not equals(Object obj) !!!
}
Run Code Online (Sandbox Code Playgroud)
进而:
public class CommonEquals implements EqualsCriteria {
private String name;
private String surname;
@Override
public boolean isEqual(EqualsCriteria other) {
if(other==null) return false;
return Arrays.asList(getParam()).equals(Arrays.asList(other.getParam()));
}
}
Run Code Online (Sandbox Code Playgroud)
这样,即使字符串数量发生变化,它仍然可以工作。
| 归档时间: |
|
| 查看次数: |
5053 次 |
| 最近记录: |