Java Collection中的Vector如何在内部工作,以便它可以接受任何类型的对象
答案 0 :(得分:3)
在内部,Vector只将对象存储为Object类型。因为所有对象都从Object继承,所以它可以存储所有对象。
原始值(例如int和double)不会从Object继承,因为它们不是对象。为了解决这些问题,Java会根据需要将它们从原始值转换为动态对象。因此int 5将被转换为一个持有5的Integer对象,而double 4.3将被转换为一个持有4.3的Double对象。这被称为自动拳击。
Java也会自动执行相反的操作,从Integer转换为int。这被称为'解拳'。
因此,它允许它存储任何对象,但是当您使用Vector进行编码时,您可以更具体。例如矢量或矢量。您可以使用“泛型”实现对Vector中可以存储的内容的限制,该“泛型”允许您将类型作为参数传递给类。在那些示例中,参数是String和Integer。
然而,泛型仅在编译时强制执行;在运行时,Vector将继续在内部使用Object。
这意味着当您的应用程序运行时,Vector和Vector之间没有区别。它们完全相同,实际上只有Vector(没有Vector或Vector确实存在)。它们之间的区别完全在编译时,在应用程序运行之前,使用Vector,只有在您只存储String对象时才会编译。
答案 1 :(得分:1)
它的工作原因是Polymorphism,这是面向对象语言(如Java)的一个关键思想,是four pillars of object oriented programming之一。
Vector是Object的集合类型,由于Java中的所有类都继承自Object,因此Vector可以接受任何类型的对象。
答案 2 :(得分:0)
答案 3 :(得分:-1)
Vector与List相同。唯一不同的是Vector的方法是同步的,而对于List,同步是程序员的责任。