我有一个唯一参数 (List elements)
将元素设置为 ListModel 的方法,但我需要进行验证以查看通用类型是否实现了可比性,因为这样的事情:
if (elements instanceof List<? extends Comparable>)
是非法的,我不知道如何进行正确的验证。
更新
我已经使用以下方法完成了此验证:
(elements.size() > 0 && elements.get(0) instanceof Comparable)
但我想知道是否有更清洁的解决方案,例如使用反射?
提前致谢。
最佳答案
列表的通用类型是erased at runtime .为此,您需要在方法签名中要求参数或单独测试每个元素。
public void doSomething(List<? extends Comparable> elements) {}
或
for (Object o : elements) {
if (o instanceof Comparable) {}
}
如果您可以控制代码,前者是首选且更简洁;如果需要,后者可以包装在实用方法调用中。
关于java - 泛型 - (elements instanceof List<? extends Comparable>) 的合法替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6975054/