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. 斯卡拉字节类型可以包含-128但不是128
- 4. 是否可以进行类型安全的节点式回调?
- 5. 我可以包含非Symfony类吗?
- 6. 在vCard 3.0中包含GENDER类型是否“非法”?
- 7. 在DDD中,包含列表的类可以是值类型吗?
- 8. java arraylist在对象上包含类型
- 9. 函数构造函数是否可以包含非此变量?
- 10. 标量类型是否包含类类型的指针?
- 11. 是否可以在cpselect图像上包含情节线?
- 12. 检查java arraylist是否包含对象
- 13. 在步骤定义类中包含非步骤方法是否可以接受?
- 14. 是否可以更改包含CLA的要点URL?
- 15. 是否可以选择包含模型中的字段?
- 16. ListView是否可以包含碎片
- 17. UIViewController是否可以包含多个UIView?
- 18. 可以检查NSData是否包含NSString
- 19. UINavigationController是否可以包含UITabbarController?
- 20. wxPython:wx.PyControl是否可以包含一个wx.Sizer?
- 21. PARAM-VALUE是否可以包含空格?
- 22. 是否可以在IFrame中包含DocuSign
- 23. Shift-JIS是否可以包含零?
- 24. 是否可以在“if()”中包含=号?
- 25. 查找类型的列表是否包含在类型
- 26. AAR归档文件是否可以包含已编译的类?
- 27. Java:看ArrayList是否包含重复值的ArrayList
- 28. 是否可以更改Drupal 6中节点上的内容类型?
- 29. 项目名称是否可以包含一个点?
- 30. 是否可以包含一个。 (句点)在一个ActionName?