💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
# 第四章第三节--2 使用泛型 标签(空格分隔): 廖雪峰 --- ## 泛型使用对比 1. 不使用泛型 `list`的接口变为`Object`类型. 使用`void add(Object)` 和 `Object get(int)` 编译器会发出警告. 在输出的时候无法判断`Object`具体类型. ![不是要用泛型](http://p0b921qfc.bkt.clouddn.com/18-5-18/71831382.jpg) 2. 使用泛型. 定义泛型`<String> list`的接口变为强类型`String` `void add(String)` `String get(int)` 输出则直接按照`String`输出. ![使用泛型](http://p0b921qfc.bkt.clouddn.com/18-5-18/96946482.jpg) 3. 自定义对象使用泛型 定义泛型`<Number> list`的接口变为强类型`Number` `void add(Number)` `Number get(int)` 输出则直接按照`Number`输出. ![Number作为泛型](http://p0b921qfc.bkt.clouddn.com/18-5-18/16271812.jpg) **注意:使用泛型的时候,可以忽略编译器可以直接推断出来的类型** ```java List<Number>list = new ArrayList<>();//后面的类型便可省略 ``` 在Arrays的sort方法中可以通过泛型来实现自定义数据类型的排序. 对于一般数据类型如下: ![一般数据](http://p0b921qfc.bkt.clouddn.com/18-5-18/22154364.jpg) 对于自定义数据. ![自定义数据](http://p0b921qfc.bkt.clouddn.com/18-5-18/77103093.jpg) ## 小节小结 - 使用泛型的时候,把泛型参数`<T>`替换成需要的`class`类型. - 可以省略编译器能自动推断出来的类型`List<String>list = new ArrayList<>()`; - 不指定泛型参数类型的时候,编译器会给出警告,且只能将<T>视为Object类型.