泛型

概念:Java泛型时jdk1.5中引入的一个新特性,其本质时参数化类型,把类型作为参数传递

常见的形式有:泛型类、泛型接口、泛型方法

1.泛型类

package gather.Generic;

/**
 * 泛型类
 * 语法:类名<T>
 *     T是类型占位符,表示一种引用类型,如果编写多个可逗号隔开<A,B,C>
 * @param <T>
 * @author 长空扯淡
 */
public class MyGeneric<T> {

    //使用泛型T
    //创建变量
    T t;

    //泛型作为方法的参数
    public void show(T t){
        //T t1 = new T(); 这是错误的,
        System.out.println(t);
    }

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

}

//使用泛型类创建对象
MyGeneric<String> myGeneric = new MyGeneric<>();
 

2.泛型接口

(1)先创建一个泛型接口

/**
 * 泛型接口
 * 语法:接口名<T>
 * 注意:不能泛型静态常量
 * @author 长空扯淡
 */
public interface MyInterface<T> {
    String name = "法外狂徒";

    T server(T t);
}

(2)接口的实现

有两种方法:第一种是直接声明泛型的类型

//这是一种方法,即直接声明泛型的类型            这里的<String>
public class MyInterfaceImpl implements MyInterface<String> {
    @Override
    public String server(String s) {
        System.out.println(s);
        return s;
    }
}

第二种是在实例化的时候给出泛型的类型

//这是第二种方法,不直接给出泛型的类型,而是在实例化的时候给出泛型的类型
public class MyInterfaceImpl2<T> implements MyInterface<T> {//这个地方暂且还是用<T>表示 前后都有
    @Override
    public T server(T t) {
        System.out.println(t);
        return t;
    }
}
实例化 给出<Integer>类型
MyInterfaceImpl2<Integer> impl2 = new MyInterfaceImpl2();
impl2.server(600);
 

3.泛型方法

package gather.Generic;

/**
 * 泛型方法
 * 语法:<T> 返回值类型
 * @author 长空扯淡
 */
public class MyGenericMethod {

    //泛型方法
    public <T>void show(){
        System.out.println("泛型方法");
    }
    public <T>T play(T t){
        System.out.println(t);
        return t;
    }
}

在main方法中调用
//泛型方法  相当于方法的重载,
MyGenericMethod myGenericMethod = new MyGenericMethod();
myGenericMethod.show();

myGenericMethod.play("张三");//可以直接给String
myGenericMethod.play(200);//也可以是int类型
 

 4.泛型集合

概念:参数化类型、类型安全的集合,强制集合元素的类型必须一致

特点:

  1. 编译时即可检查,而非运行时抛出异常。
  2. 访问时,不必转换类型(拆箱)。
  3. 不同泛型之间引用不能相互赋值,泛型不存在多态。
//创建集合                             后面这里的String可写可不写
        Set<String> set = new HashSet<String>();

 

posted @ 2022-03-27 17:50  长空扯淡  阅读(32)  评论(0)    收藏  举报