首页 > 代码库 > 5、泛型
5、泛型
jdk1.5
好处:
1、将运行时的异常提前至编译时
2、避免了无谓的强转
常见应用:
ArrayList<String> list = new ArrayList<String>(); // 里面存储的是String类型的数据类型
注意:泛型无多态,左右两边必须一致(推荐),或者只写一边(为向上兼容)
自定义泛型:一个数据类型的占位符或者一个数据类型的变量
1、泛型方法 :
参数化类型,将类型由原来的具体类型参数化,类型也定义为参数形式(类型形参),在使用时传入具体的类型(类型形参)
修饰符 <T>返回值类型 函数名(T t){......}; // public <T>void get(T t){}
在泛型中不能使用基本类型,要使用则用其对应的包装类
方法泛型注意:
1、方法上自定义泛型,这个自定义泛型的具体数据类型是在调用该方法时传入实参时确定的
2、用T或者E表示
2、泛型类
class 类名<T> { }
注意:
1、类自定义泛型的具体数据类型是在使用该类的时候创建对象的时候确定的
2、使用该类是没有指定泛型的具体类型,默认为Object类型
3、在类上自定义泛型不能作用于静态方法,如果静态方法需要使用自定义类型,需要自己在方法上声明使用(原因1)
3、泛型接口
interface 接口名<T>{ }
注意:
1、接口上自定义的泛型的具体数据类型是在实现一个接口时指定的
2、实现接口时没有指定具体的数据类型,默认是Object
要想延长接口自定义泛型的具体数据类型到创建实现接口实现类对象时才指定
public class Demo<T> implements Dao<T>{ }
4、泛型的上下限
public static void print(Collection<? super Integer> c) // ? super Integer 只能存储Integer或者Integer的父类元素,泛型的下限;extends是上限
5、泛型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。