Java 铸造通用列表
c) 下面的代码是什么意思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的任何类的对象分
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
接口时,这才是合法的。
是限制集合(列表)可以保存的类型的
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>();