首页 > 编程 > Java > 正文

Java泛型(Generic)

2019-11-11 03:56:05
字体:
来源:转载
供稿:网友
泛型本质是把类型参数化,即数据类型是一个参数,可用在类/接口/方法中,分别称为泛型类/泛型接口/泛型方法,用于数据类型不确定的情况下!

一.定义泛型

1.泛型类(作用范围是整个类)

class Gen<T> { PRivate T object; public Gen(T object) { this.object = object; } public T getObject() { return object; }}public class GenDemo { public static void main(String[] args) { // 定义Int版本 Gen<Integer> intObj = new Gen<Integer>(88); int i = intObj.getObject(); // 定义String版本 Gen<String> strObj= new Gen<String>("Hello"); String s = strObj.getObject(); }}注意: 因为static方法无法访问[泛型类的参数T],所以static方法使用泛型功能,必须用[泛型方法].

2.泛型方法(作用范围是整个方法)

public class A { // 必须先定义<T>,其中字母可以是任意字母,通常大写字母 public static <T> void test(T t) { System.out.println(t.getClass().getName()); } public static void main(String[] args) { // 当方法被调用时,虚拟机自动判断T的具体类型 A.test("x"); A.test(1); A.test(new A()); }}

二.泛型边界

泛型引用不确定,可使用泛型通配符? Class<?> clazz = Class.forName("xxx");List<?> list = null;list = new ArrayList<String>(); list = new ArrayList<Integer>();注意: 1.通配符?只能用于泛型引用,不能用于泛型对象! 2.如果只指定了<?>,则默认是任意类 3.通配符泛型限制,<? extends Collection> <? super Double>泛型边界T extends A 指定泛型上边界类(泛型T必须是A类或其子类) T super B 指定泛型下边界类(泛型T必须是B类或其超类)

GitHub博客:http://lioil.win/2017/02/06/java-Generic.html Coding博客:http://c.lioil.win/2017/02/06/Java-Generic.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表