🐨使用泛型
2021-3-10
| 2023-8-3
0  |  阅读时长 0 分钟
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进行排序
  • Java
  • 泛型编写泛型
    目录