Java 铸造通用列表

Java 铸造通用列表,java,list,generics,instantiation,Java,List,Generics,Instantiation,c) 下面的代码是什么意思 Point x = new Point(1,2) List list0=new List1(); 列表是java中的一个接口,您可能希望将其实例化为ArrayList List<Integer> list0 = new List1<Integer>(); List1必须声明为 List list0 = new ArrayList(); public类List1实现列表{ ... List是一个接口,因此可以将实现List的任何类的对象分

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

Point x = new Point(1,2)
List list0=new List1();

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

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

List1
必须声明为

List list0 = new ArrayList();
public类List1实现列表{
...
List
是一个接口,因此可以将实现
List
的任何类的对象分配给类型为
List
0)No的变量。
List
是接口的名称。请参阅:

1) 不,java具有多态性,因此您可以用一个实现的接口或扩展类的名称调用对象

b) 不一定。右侧的类型必须与分配给的类型兼容-它必须是相同的或子类型。在这种情况下,
List1
必须实现
List
接口

c) 创建一个新的
List1
实例来保存整数(“integer”是错误的-它必须是“integer”);只有当
List1
类实现了
List
接口时,这才是合法的。
是限制集合(列表)可以保存的类型的
  • 列表是Java中的一个接口
  • 不,左侧可以是右侧对象扩展或实现的任何超类或接口。请看“契约式设计”
  • 也许你的意思是

    列表l=新的ArrayList()

  • 这是一个只能包含整数类型的列表

    不是一个关键字,它是一个类型,特别是一个Java接口。示例中的代码不会编译(除非
    List1
    类被定义为:
    classlist1实现列表{…}
    ),但是类似这样的情况会:

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

    虽然,像上面一样,您可以从
    obj
    访问的唯一方法是中定义的方法,即使所引用的对象实际上是
    ArrayList
    ,我认为即使这段代码也不会编译,除非List1是列表接口的实现。此外,除非您自己定义了
    integer
    ,否则我认为您可以编译我我给了一个
    整数
    +1,这是迄今为止唯一一个解决泛型(不正确)使用问题的人。
    public class List1<T> implements List<T> {
    ...
    
    List<Integer> ls = new ArrayList<Integer>();
    
    Object obj = new ArrayList<Integer>();