type
status
date
slug
summary
tags
category
icon
password
Property
使用
ArrayList
时,如果不定义泛型类型时,泛型类型实际上就是Object
:此时,只能把
<T>
当作Object
使用,没有发挥泛型的优势。当我们定义泛型类型
<String>
后,List<T>
的泛型接口变为强类型List<String>
:当定义泛型类型
<Number>
后,List<T>
的泛型接口变为强类型List<Number>
:编译器如果能自动推断出泛型类型,就可以省略后面的泛型类型
编译器看到泛型类型
List<Number>
就可以自动推断出后面的ArrayList<T>
的泛型类型必须是ArrayList<Number>
,因此可以简写为:泛型接口
除了
ArrayList<T>
使用了泛型,还可以在接口中使用泛型。例如,Arrays.sort(Object[])
可以对任意数组进行排序,但待排序的元素必须实现Comparable<T>
这个泛型接口:可以直接对
String
数组进行排序:这是因为
String
本身已经实现了Comparable<String>
接口。如果换成我们自定义的Person
类型试试:ClassCastException
,即无法将Person
转型为Comparable
。修改代码,让Person
实现Comparable<T>
接口:可以正确实现按
name
进行排序