泛型

泛型

  • java泛型是JDK1.5中引入的一个新特性,其本质是参数化类型,把类型作为参数传第。
  • 常见形式有泛型类、泛型接口、泛型方法。
  • 语法
    • <T,...> T作为类型占位符,表示一种引用类型。
  • 好处:
    • 提高代码的重用性
    • 防止类型转换异常,提高代码的安全性

泛型类

/**
 * 泛型类
 * 语法:类名<T>
 * T表示类型占位符,表示一种引用类型,可以写多个,用逗号隔开
 */
public class MyGeneric<T> {
    //使用泛型T
    //1.创建变量  不能实例化
    T t;

    //2.添加方法  泛型作为参数
    public void show(T t){
        System.out.println(t);
    }

    //3.使用泛型作为方法的返回值
    public T getT(){
        return t;
    }

}

public class Test {
    public static void main(String[] args) {
        //使用泛型类创建对象
        //泛型只能是引用类型  不同的泛型类型对象之间不能相互赋值
        MyGeneric<String> myGeneric = new MyGeneric<>();
        myGeneric.t = "hello";
        myGeneric.show("你好");
        String String = myGeneric.getT();

        MyGeneric<Integer> myGeneric1 = new MyGeneric<>();
        myGeneric1.t = 12;
        myGeneric1.show(34);
        System.out.println(myGeneric1.getT());
    }
}


泛型接口

/**
 * 泛型接口
 * 语法:接口名<T>
 * 注意:不能创建泛型静态常量
 */
public interface MyInterface<T> {
    String name = "张三";
    T server(T t);
}


public class MyInterfaceImpl implements MyInterface<String>{ //方法1:直接确定类型
    @Override
    public String server(String s) {
        System.out.println(s);
        return s;
    }
}
//测试代码:
//MyInterfaceImpl myInterface = new MyInterfaceImpl();
//myInterface.server("a");


public class MyInterfaceImpl2<T> implements MyInterface<T> {  //方法2:让实现类也成为泛型类
    @Override
    public T server(T t) {
        System.out.println(t);
        return t;
    }
}
//测试代码:
//MyInterfaceImpl2<Integer> myInterfaceImpl2 = new MyInterfaceImpl2<>();
//myInterfaceImpl2.server(1112);

泛型方法

/**
 * 泛型方法
 * 语法:<T> 返回值类型
 */
public class MyGenericMethod {
    //泛型方法
    public <T> T show(T t){  //调用方法时根据所传递的参数类型来判断是什么类型
        System.out.println("泛型方法");
        System.out.println(t);
        return t;
    }
}

public class Test {
    public static void main(String[] args) {
        //调用泛型方法
        MyGenericMethod myGenericMethod = new MyGenericMethod();
        myGenericMethod.show("a");
        myGenericMethod.show(2);
        myGenericMethod.show(2.2);

    }
}

泛型集合

  • 概念:参数化类型、类型安全的集合、强制集合的元素的类型必须一致。
  • 特点
    • 编译时即可检查,而非运行时抛出异常
    • 访问时,不必类型转换(拆箱)
    • 不同泛型之间引用不能相互赋值,泛型不存在多态
posted @ 2020-07-07 19:22  邱大将军  阅读(93)  评论(0编辑  收藏  举报