java - 泛型 - (elements instanceof List<? extends Comparable>) 的合法替代品

标签 java generics syntax instanceof

我有一个唯一参数 (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/

相关文章:

java - 需要帮助将 Java 泛型传递给 Collections.sort()

Java创建类时出现 '}'错误

python - 何时使用 * 和 ** 作为 python 函数中的函数参数

python - 简单的Python-3程序中的无效语法错误

Java-如何通过单击按钮添加更多文本字段?

java - 解析带有前缀的逗号分隔字符串

java - 在 2 个给定日期之间添加日期的方法?

java - 如何在我的安卓应用中使用谷歌翻译 API

c# - 通用节点的通用树 C#

c# - 返回未知数据类型