确保通用vararg参数具有相同的类型

时间:2016-04-20 15:27:25

标签: java generics type-inference

我想实现比较相同类型对象的方法。

isOnceOf()实现为编译时类型严格并在第3行给出编译错误是否可行?
目前我只收到警告。

public static void main(String[] args) {
    System.out.println(isOneOf(3, 1, 2, 3)); // true
    System.out.println(isOneOf("A", "B", "C", "D")); // false
    System.out.println(isOneOf(1, "B", "C", "D")); // false, warn
}

public static <T> boolean isOneOf(T obj, T mate, T... mates) {
    if (obj == null) {
        return false;
    }
    if (obj.equals(mate)) {
        return true;
    }
    for (T m : mates) {
        if (obj.equals(m)) {
            return true;
        }
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

谢谢,Tunaki。接下来按预期工作。

public static <O, T extends O> boolean isMember(O obj, T mate, T... mates) {
    if (obj == null) {
        return false;
    }
    if (obj.equals(mate)) {
        return true;
    }
    for (T m : mates) {
        if (obj.equals(m)) {
            return true;
        }
    }
    return false;
}