比如:
List myIntList = new LinkedList()// 1
myIntList.add(new Integer(0))// 2
Integer x = (Integer) myIntList.iterator().next()// 3
第三行的这个强制类型转换可能会引起运行时的错误。
泛型的思想就是由程序员指定类型,这镇弯样集合就只能容纳该类型的元素。
使用泛型:
List<Integer>myIntList = new LinkedList<Integer>()// 1'
myIntList.add(new Integer(0))// 2'
Integer x = myIntList.iterator().next()// 3'
将第三行的强制类型腔空转换变为了第一行的List类型说明,编译器会为我们检查类型的正确性。这样,代码的可读性和健壮性也会增强。
泛型使用基础
例如:
public interface List <E>
{
void add(E x)
Iterator<E>iterator()
}
public interface Iterator<E>
{
E next()
boolean hasNext()
}
尖括号中包含的是形式类型参数(formal type parameters),它们就如同一般的类型一样,可以在整个类的声明中被使用。
当类被使用时,会使用具体的实际类型参数(actual type argument)代替。
比如前面的例子中的List<Integer>,那么所有的E将会被Integer类型所代替。
泛型类型参数只能被类或接御圆闷口类型赋值,不能被原生数据类型赋值,原生数据类型需要使用对应的包装类。
形式类型参数的命名:尽量使用单个的大写字母(有时候多个泛型类型时会加上数字,比如T1,T2),比如许多容器集合使用E,代表element(元素),Map中用K代表键keys,V代表值。
你创建的是一个数据对象而不是ArrayList对象,把后面的泛型纯侍丛去掉就可谈配了
再者,普通变量名做樱应该小写,尽量不要同java关键字
相同
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)