【发布时间】:2014-05-22 17:56:53
【问题描述】:
假设我有以下两个空列表
List<String> obj1 = new ArrayList<String>();
List< Integer> obj2 = new ArrayList<Integer>();
如果没有先见之明,我怎么知道哪个是String 类型,哪个是Integer 类型? (请不要介意我为什么需要这些信息)。
这里我不能再做
if (!list.isEmpty() && list.get(0) instanceof String)
因为列表是空的。
【问题讨论】:
-
如果是局部变量,不能。基本上你现在必须改变拜托,别介意我为什么需要这些信息。
-
这是不可能的。我还发现这样的情况也可能指向设计缺陷。
-
@SotiriosDelimanolis,我只是想避免 cmets 对它的用途等进行抨击。但是该列表是通过观察者的更新方法中继的,其中 observable 可以发送任何一种内容类型。
-
即使
List不为空,一个元素是instanceofX这一事实并不能证明List是List<X>