具有可变数量参数的接口的方法

Man*_*rte 6 java interface

我想问你是否可以在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:其实我的问题有点复杂,但这对我有用.

Jat*_*tin 1

更好的方法是:

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)

这样,即使字符串数量发生变化,它仍然可以工作。