在ArrayList的泛型参数中传递的类名

时间:2014-10-11 13:05:19

标签: java

我是Java的初学者。经过长时间的尝试,我无法理解这些界限。

private ArrayList <Lot> lots;
lots = new ArrayList<Lot>();

有人可以描述在将类名传递给ArrayList<>参数时如何工作吗?

3 个答案:

答案 0 :(得分:1)

来自Here

以下没有泛型的代码段需要强制转换:

List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);

当重写使用泛型时,代码不需要转换:

List<String> list = new ArrayList<String>();
list.add("hello");
String s = list.get(0);   // no cast

答案 1 :(得分:1)

这些是generics,这是Java 5中引入的一项功能。

简而言之,这意味着lots中的每个元素都是Lot - 您无法向其添加IntegerString,并且每当get Lot 1}}列表中的元素会得到lots.get(0).someMethodOfLot();个实例,因此您可以执行以下操作:{{1}}。

答案 2 :(得分:1)

执行ArrayList <Lot> lots= new ArrayList<Lot>();时 它只是意味着您正在创建一个ArrayList,它可以包含Lot类型的Object。

如果您尝试将任何其他类型的元素添加到此列表中,它将为您提供编译时错误。它有助于在编译时检测错误并使您的代码安全。

此功能由泛型提供。现在问题是为什么我们需要泛型。

泛型的用途

  1. 在编译时进行更强的类型检查。 Java编译器将强类型检查应用于通用代码,并在代码违反类型安全性时发出错误。修复编译时错误比修复运行时错误更容易,这很难找到。
  2. 消除演员阵容。这个例子由Rakesh Kr提供。
  3. 实现更好的代码可重用性,例如通用算法的实现。 通过使用泛型,程序员可以实现泛型算法,这些算法可以处理不同类型的集合,可以自定义,并且类型安全且易于阅读。