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)
但我想知道是否有更清洁的解决方案,例如使用反射?
提前致谢.
列表的通用类型在运行时被删除。为此,您需要在方法签名中需要参数或单独测试每个元素。
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)
如果您可以控制代码,则前者是首选且更干净;如果需要,后者可以包装在实用程序方法调用中。
归档时间: |
|
查看次数: |
3101 次 |
最近记录: |