List<Integer> list0 = new List1<Integer>();
a)“List”这个词在java中是一个关键词吗?
b)创建对象时,两侧的类名不应该相同吗?例如:
Point x = new Point(1,2)
c)以下代码是什么意思?
List<Integer> list0 = new List1<Integer>();
答案 0 :(得分:8)
a)不,不是,它是Interface
b)并非总是如此。右侧的类型必须与分配的类型兼容 - 它必须相同或者是子类型。在这种情况下,List1
必须实现List
接口。
c)创建一个新的List1
实例来保存整数(“整数”是错误的 - 它必须是“整数”);如果List1
类实现List
接口,则这是合法的。 <Integer>
是generic type,用于限制集合(List)可以容纳的类型。
答案 1 :(得分:3)
List1
必须在某处声明为
public class List1<T> implements List<T> {
...
List
是一个接口,因此实现 List
的任何类的对象都可以分配给List
类型的变量。
答案 2 :(得分:2)
0)否。List
是接口的名称。请参阅:http://docs.oracle.com/javase/6/docs/api/java/util/List.html
1)编号java具有Polimorphism,因此您可以通过一个已实现的接口或扩展类的名称来调用对象
答案 3 :(得分:1)
List是java中的一个接口,您可能希望将其实例化为ArrayList。
List list0 = new ArrayList();
答案 4 :(得分:0)
℃。也许你的意思是
列表l = new ArrayList&lt;&gt;();
这是一个只能包含整数类型的列表
答案 5 :(得分:0)
List不是关键字,它是一种类型,特别是Java接口。您的示例中的代码无法编译(除非List1
类定义为:class List1 implements List { ... }
),但是这样的内容会:
List<Integer> ls = new ArrayList<Integer>();
这会创建一个可以容纳ArrayList
的{{1}},并将其引用分配给变量Integers
,该变量被声明为ls
类型。 List<Integer>
可能会引用不同类型的列表,例如ls
,但您可以保证LinkedList
确实指向某种列表(除非它为空),因此您可以使用ls
界面中指定的方法。
变量的类型不需要与赋值右侧的对象类型相同(尽管通常是这样),但对象必须是相同类型或子类/实现变量类型。由于所有对象都扩展为List
,因此您可以执行以下操作:
Object
尽管如上所述,Object obj = new ArrayList<Integer>();
中您可以访问的唯一方法是Object
中定义的内容,即使引用的对象实际上是obj
。