泛型 - (元素实例List <?extends Comparable>)的合法替代方法

Jua*_*ego 8 java generics syntax instanceof

我有这个方法哪个唯一参数(List elements)设置元素到ListModel,但我需要进行验证,看看泛型类型是否实现可比较,因为这样的事情:

if (elements instanceof List<? extends Comparable>)
Run Code Online (Sandbox Code Playgroud)

是非法的,我不知道如何做正确的验证.

更新

我已经使用以下方法完成了此验证:

(elements.size() > 0 && elements.get(0) instanceof Comparable)
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更清洁的解决方案,例如使用反射?

提前致谢.

And*_*ite 4

列表的通用类型在运行时被删除。为此,您需要在方法签名中需要参数或单独测试每个元素。

public void doSomething(List<? extends Comparable> elements) {}
Run Code Online (Sandbox Code Playgroud)

或者

for (Object o : elements) {
    if (o instanceof Comparable) {}
}
Run Code Online (Sandbox Code Playgroud)

如果您可以控制代码,则前者是首选且更干净;如果需要,后者可以包装在实用程序方法调用中。