1.位置与作用2.类 泛型3.参数与返回值 泛型4.父子类 泛型5.接口与实现 泛型6.通配符(?、extends、super)7.注意《上一篇:Object对象》《下一篇:Java异常处理》《目录:Java基础》《幕》
1.位置与作用2.类 泛型1.类2.接口3.参数类型4.方法返回值作用
1.可以在编译期间检查错误
2.降低运行时产生 ClassCastException 异常的概率(如:动态自定义泛型转换)
3.实现声明类型限制,使代码更加 规范、易读、健壮注意:
运行时就不会产生 ClassCastException异常,这句话并不准确
请看 4.参数指明泛型中的异常
3.参数与返回值 泛型类中的泛型,可以只有1个,可以存在多个(用逗号分隔)自定义的任意字母都可以,T只是一个代号(表示Type的意思)
4.父子类 泛型根据参数类型传递的泛型,返回对应类型的返回值注意:如果方法内部无法处理类型转换,仍然会出现 ClassCastException异常
5.接口与实现 泛型对于父类中存在泛型,子类继承父类已知:父类class Father
{},则存在以下四种情况 //1.全部保留 class son1extends Father { } //2.1.部分保留、部分变更 class son2_1 extends Father { } //2.2.部分保留、部分变更 class son2_2 extends Father { } //3.全部变更 class son3 extends Father { } //4.擦除 class son4 extends Father { }
6.通配符(?、extends、super)对于接口中存在泛型,实现类应满足如下情况已知:接口interface TestInterFace
{,则存在以下四种情况 package com.abl.javabasis._08_generics; public interface TestInterFace{ } //全部保留 class Impl_1 implements TestInterFace { } //部分保留、部分变更 class Impl_2_1 implements TestInterFace { } //部分保留、部分变更 class Impl_2_2 implements TestInterFace { } //全部变更 class Impl_3 implements TestInterFace { } //擦除 class Impl_4 implements TestInterFace { }
如下方代码所示:
通配符的限制 > : 没有任何类型限制,任意对象都可 extends Number> : 继承,限制为 Number或Number的子类(接口和实现类也是这个关系) super Number> : 向上,限制为 Number或Number的父类
如下方代码所示:
1.不能用在泛型方法声明上,返回值类型前面<>不能使用?2.不能用在泛型类的声明上3.不能用在创建对象上,右边属于创建集合对象
package com.abl.javabasis._08_generics;
import java.util.HashSet;
//1:不能用在泛型方法声明上,返回值类型前面<>不能使用?
//public static <错误> void test(ArrayList> list){}
//2:不能用在泛型类的声明上
//class Test<错误>{}
//3:不能用在创建对象上,右边属于创建集合对象
//ArrayList> list2 = new ArrayList<错误>();
public class TestWildcard {
// ? extends 继承,限制为 Number或Number的子类
void ltClass(HashSet extends Number> param) {
}
//? super 向上,限制为 Number或Number的父类
void gtClass(HashSet super Number> param) {
}
//? 没有任何限制,任意对象都可
void objClass(HashSet> p) {
}
}
7.注意
《上一篇:Object对象》1.可以声明多个泛型,多个泛型用逗号分隔 class Test1
《下一篇:Java异常处理》点击跳转
《目录:Java基础》点击跳转
《幕》点击跳转
留白 —<老吉> ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀



