泛型

泛型

简介

泛型是JDK1.5中引入的新特性 ,本质是参数化类型,即把类型作为参数传递

常见形式有泛型类,泛型接口和泛型方法

语法
<T,...> T称为类型占位符,表示一种引用类型

好处
提高代码的重用性
防止类型异常转换,提高代码的安全性

实践

泛型类
语法:类名
注意:泛型变量不能实例化

package com.qianfeng.collection;

/**
 * 功能描述
 *
 * @since 2022-05-10
 */
public class GenericClassDemo<T> {
    T t;

    void show(T t) {
        System.out.println(t);
    }

    T getT() {
        return t;
    }

    public static void main(String[] args) {
        GenericClassDemo<String> demo = new GenericClassDemo<>();
        demo.t = "b";
        demo.show("a");
        System.out.println(demo.getT());

        GenericClassDemo<Integer> demo1 = new GenericClassDemo<>();
        demo1.t = 20;
        demo1.show(100);
        System.out.println(demo1.getT());
    }
}

泛型接口
语法:接口名
注意:接口中不可以使用泛型变量作为静态常量

package com.qianfeng.collection;

/**
 * 功能描述
 *
 * @since 2022-05-10
 */
public interface GenericInterfaceDemo<T> {

    void show(T t);

}
package com.qianfeng.collection;

/**
 * 功能描述
 *
 * @since 2022-05-10
 */
public class GenericInterfaceDemoImpl implements GenericInterfaceDemo<String> {
    @Override
    public void show(String s) {
        System.out.println(s);
    }
    

    public static void main(String[] args) {
        GenericInterfaceDemoImpl demo = new GenericInterfaceDemoImpl();
        demo.show("haha");

    }
}
package com.qianfeng.collection;

/**
 * 功能描述
 *
 * @since 2022-05-10
 */
public class GenericInterfaceDemoImpl2<T> implements GenericInterfaceDemo<T> {
    @Override
    public void show(T t) {
        System.out.println(t);
    }

    public static void main(String[] args) {
        GenericInterfaceDemoImpl2<String> demoImpl2 = new GenericInterfaceDemoImpl2<>();
        demoImpl2.show("we");

        GenericInterfaceDemoImpl2<Integer> demoImpl3 = new GenericInterfaceDemoImpl2<>();
        demoImpl3.show(500);
    }
}

泛型方法
语法: 方法返回值 方法名(方法参数...){
方法实现
}

package com.qianfeng.collection;

/**
 * 功能描述
 *
 * @since 2022-05-11
 */
public class GenericMethodDemo {
    <T> void show(T t) {
        System.out.println(t);
    }

    <T> T get(T t) {
        return t;
    }

    public static void main(String[] args) {
        GenericMethodDemo methodDemo = new GenericMethodDemo();
        methodDemo.show(200);
        methodDemo.show("String");
        System.out.println(methodDemo.get(200));
        System.out.println(methodDemo.get("String"));
    }
}
posted @ 2022-05-11 10:05  Oh,mydream!  阅读(5)  评论(0编辑  收藏  举报