【问题标题】:How can I tell the content type of an empty list in java [duplicate]java - 如何判断java中空列表的内容类型[重复]
【发布时间】: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不为空,一个元素是instanceof X这一事实并不能证明ListList&lt;X&gt;

标签: java list arraylist


【解决方案1】:

这不是一个正确的方法,但它有效!

List<String> obj1 = new ArrayList<>();    
List<Integer> obj2 = new ArrayList<>();

Object o = new Integer(7);
try{
  obj1.add((String) o);
  System.out.println("This is a list of integer!");
}catch(ClassCastException ex){
  System.out.println("This is not a integer list!");
}

【讨论】:

  • 如果不正确,为什么要分享?
  • 简单地执行(String)new Integer(7)保证你无论如何都会发生类转换异常。
  • 你可以在这里假设 OP 在他们的观察者方法中收到了一个List&lt;?&gt;
猜你喜欢
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
相关资源
最近更新 更多