0
List<Integer> list0 = new List1<Integer>();

a)“List”这个词是java中的关键字吗?

b) 创建对象时,类名不应该两边都一样吗?例如:

Point x = new Point(1,2)

c) 下面的代码是什么意思?

List<Integer> list0 = new List1<Integer>();
4

6 回答 6

8

a) 不,它不是,它是一个Interface

b) 并非总是如此。右侧的类型必须与被分配的类型兼容 - 它必须相同,或者是子类型。在这种情况下List1必须实现List接口。

c)创建一个新List1实例来保存整数(“整数”是错误的 - 它必须是“整数”);List1仅当类实现了List接口时,这才是合法的。<Integer>是一个泛型类型,它限制了集合(List)可以持有的类型。

于 2012-10-03T21:06:48.010 回答
3

List1必须在某处声明为

public class List1<T> implements List<T> {
...

List是一个接口,因此任何实现 List类的对象都可以分配给类型为 的变量List

于 2012-10-03T21:05:06.823 回答
2

0) No.List是接口的名称。请参阅:http ://docs.oracle.com/javase/6/docs/api/java/util/List.html

1)不,java有多态,所以你可以通过一个实现的接口或扩展类的名称来调用一个对象

于 2012-10-03T21:05:49.277 回答
1

List 是 java 中的一个接口,您可能希望将其实例化为 ArrayList。

List list0 = new ArrayList();
于 2012-10-03T21:05:02.597 回答
0
  • A. List 是 Java 中的一个接口。
  • B. 左侧不能是右侧对象扩展或实现的任何超类或接口。看看“按合同设计”
  • C. 也许你的意思是

    列表 l = new ArrayList<>();

这是一个只能包含 Integer 类型的列表

于 2012-10-03T21:10:30.483 回答
0

List不是关键字,它是一种类型,特别是 Java 接口。您的示例中的代码无法编译(除非List1该类被定义为:)class List1 implements List { ... },但是这样的事情会:

List<Integer> ls = new ArrayList<Integer>();

这将创建一个ArrayList可以容纳的对象Integers,并将对它的引用分配给ls声明为类型的变量List<Integer>ls可能持有对不同类型列表的引用,例如 a LinkedList,但您可以保证它ls确实指向某种列表(除非它为空),因此您可以使用List接口中指定的方法。

变量的类型不需要与赋值右侧的对象的类型相同(尽管经常如此),但对象必须是相同的类型,或者是变量的子类/实现类型。由于所有对象都扩展Object,您始终可以执行以下操作:

Object obj = new ArrayList<Integer>();

虽然,像上面一样,您可以访问的唯一方法obj是在 中定义的Object,即使被引用的对象实际上是一个ArrayList.

于 2012-10-03T21:12:43.137 回答