我想在列表中运行某些测试。列表可以包含完全不同的类。
我有一种方法来检查列表的一致性 - 不为空,不为空,不超过 x 个元素。这对所有列表都是通用的。然后我想测试每个对象,使用重载。
这个想法是这样的:
public static <T> void check(List<T> list) {
//do general checks
for (T element : list) {
check(element);
}
}
进而
public static void check(SomeType element) {...}
public static void check(SomeOtherType element) {...}
但我还必须添加这样的方法:
public static void check(T element) {...}
这是在运行时调用的——不是我使用特定类的其他方法。虽然课程完全一样。我显然缺少一些泛型的理解。
现在,如果我根本不使用一般方法并尝试以这种方式解决它:
public static void check(List<SomeType> list) {...}
public static void check(List<SomeOtherType> list) {...}
编译器错误 - “方法检查(列表)与另一个方法具有相同的擦除检查(列表)......”
那么有什么优雅的解决方案吗?我可以只使用不同的方法名称,但想知道没有它怎么可能。
谢谢!