【发布时间】:2011-08-07 19:04:04
【问题描述】:
我有这个方法,它的唯一参数 (List elements) 将元素设置为 ListModel,但我需要进行验证以查看泛型类型是否实现了可比性,因为这样的事情:
if (elements instanceof List<? extends Comparable>)
是非法的,我不知道如何进行正确的验证。
更新
我已经使用以下方法完成了此验证:
(elements.size() > 0 && elements.get(0) instanceof Comparable)
但我想知道是否有更清洁的解决方案,例如使用反射?
提前致谢。
【问题讨论】:
-
看起来你并不真正知道你到底想要什么。 Comparable 本身毫无用处 - 这就是为什么它现在被参数化为 Comparable
- 因为您需要知道它能够与什么进行比较。即使您能够获得这个 List of Comparable 实例,如果它们不能相互比较(例如,该列表包含一个 String 和一个 BigDecimal 类型),您将仍然在运行时,这是泛型试图通过编译器错误来防止的。
标签: java generics syntax instanceof