我想使用通配符作为类型在类中设置一个列表:
public List<?> setList(List<?> list){
this.list = list;
}
但我只接受某些类型的 List 元素。该示例仅包含 String 方法,但我将接受 String、Double 或 Integer fe。
我知道这种方法:
public void setList(List<?> list){
if(!list.isEmpty())
if(list.get(0).getClass().equals(String.class))
this.list = list;
else
throw new IllegalArgumentException();
else
// what to do?
}
如果列表不为空,我可以检查第一个元素类。如果它是 String.class 我将设置列表,否则将抛出异常。
但是如果列表为空,我应该如何反应?因为 AFAIK 由于类型擦除,我无法检查通配符的类型。所以,我不能实例化一个空列表。
我应该这样做this.list = null;
吗?还是我应该只接受非空列表并在它为空时抛出异常?我很感激任何建议。因为这段代码将被重用,并且应该告知使用它的人会发生什么。