java – 检查Object是否是List的实例
发布时间:2020-12-14 19:33:45 所属栏目:Java 来源:网络整理
导读:我有一个有时包含List Object的Object.我想用instanceof检查它,如果是,则添加一些元素. void add(Object toAdd) { Object obj = getValue(); if (obj instanceof List?) { List? list = obj; if (list instanceof ListObject) { // Error ((ListObject) list
我有一个有时包含List< Object>的Object.我想用instanceof检查它,如果是,则添加一些元素.
void add(Object toAdd) { Object obj = getValue(); if (obj instanceof List<?>) { List<?> list = obj; if (list instanceof List<Object>) { // Error ((List<Object>) list).add(toAdd); } else { List<Object> newList = new ArrayList<Object>(list); newList.add(toAdd); setValue(newList); } return; } throw new SomeException(); } 它说我无法检查它是否是List< Object>的实例因为java不关心并删除<>中的类型. 解决方法
我之前的回答是错的,因为我不完全理解你的要求.
如果您添加的项目是对象,只要您有一个列表,您可以毫无问题地添加它. 您不必重新创建列表 void add(Object toAdd) { Object obj = getObject(); if (obj instanceof List<?>) { ((List<Object>)obj).add(toAdd); return; } throw new SomeException(); } UPDATE 作为几条评论的答案,将任何对象添加到列表中没有问题,并且在迭代之后找出它是什么类型的对象没有问题: List<String> x1 = new ArrayList<String>(); Object c3 = x1; x1.add("asdsad"); Integer y2 = new Integer(5); if (c3 instanceof List<?>){ ((List<Object>)c3).add((Object)y2); } for (Object i : (List<Object>)c3){ if (i instanceof String){ System.out.println("String: " + (String)i); } if (i instanceof Integer){ System.out.println("Integer: "+ (Integer)i); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |