0
A
回答
5
是的,但如果您尝试访问非节点元素就好像它是节点一样,您将得到类转换异常。泛型在(for)运行时被丢弃。
例如:
import java.util.*;
import java.awt.Rectangle;
public class test {
public static void main(String args[]) {
List<Rectangle> list = new ArrayList<Rectangle>();
/* Evil hack */
List lst = (List)list;
/* Works */
lst.add("Test");
/* Works, and prints "Test" */
for(Object o: lst) {
System.err.println(o);
}
/* Dies horribly due to implicitly casting "Test" to a Rectangle */
for(Rectangle r: list) {
System.err.println(r);
}
}
}
1
鉴于:
List<Node> nodelist = new ArrayList<Node>();
Object toAdd = new Object();
然后:
((List) nodelist).add(toAdd);
或
((List<Object>) nodelist).add(toAdd);
会做黑客。伊克。我觉得很肮脏。但是,你不应该这样做。如果你真的需要混合类型,那么这样做:
List<Object> mixedList = new ArrayList<Object>(list);
mixedList.add(toAdd);
这一解决办法,至少,会显示给他人,他们必须提防对象的任何子类可以在列表中。
0
假设您使用泛型来创建ArrayList,您可以使用反射将非节点添加到它中,因为在运行时不会保留类型信息。
取决于如何将对象从ArrayList中取出,您可能会遇到ClassCastException。
如果你真的对ArrayList中的非特定类型有需求,那么为什么不使用它就没有Generic?
相关问题
- 1. C#中的ArrayList是否可以包含各种类型的对象?
- 2. 节点是否可以包含与同一端节点的关系集合?
- 3. 是否可以选择一个只包含子节点子集的节点?
- 4. 斯卡拉字节类型可以包含-128但不是128
- 5. 'anyURI'的xsd类型是否可以包含空格?
- 6. typedef是否可以包含size_t的签名类型?
- 7. 是否可以在Node-Red流中编辑配置节点?
- 8. 是否可以进行类型安全的节点式回调?
- 9. 果园 - 表单是否可以包含许多内容类型?
- 10. 我可以包含非Symfony类吗?
- 11. 确定以下兄弟节点是否包含具有相同值的节点
- 12. 解析Java的树状结构,而节点可以包含ArrayList中的
- 13. XSLT测试XML节点是否包含另一个XML节点?
- 14. xsl检查根节点是否包含任何子节点
- 15. 是否可以为图表js添加包含文本的小节点?
- 16. 在vCard 3.0中包含GENDER类型是否“非法”?
- 17. 在DDD中,包含列表的类可以是值类型吗?
- 18. java arraylist在对象上包含类型
- 19. 函数构造函数是否可以包含非此变量?
- 20. 标量类型是否包含类类型的指针?
- 21. 检查列表是否包含类型?
- 22. 是否可以在cpselect图像上包含情节线?
- 23. 检查arraylist是否只包含空值
- 24. 检查java arraylist是否包含对象
- 25. 在步骤定义类中包含非步骤方法是否可以接受?
- 26. 是否可以更改包含CLA的要点URL?
- 27. 是否可以选择包含模型中的字段?
- 28. 检查两个arraylist是否包含一个类似的组件
- 29. PARAM-VALUE是否可以包含空格?
- 30. 服务是否可以包含活动?