泛型

泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,而这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口。

避免了类型强转的麻烦。
它提供了编译期的类型安全,确保在泛型类型(通常为泛型集合)上只能使用正确类型的对象,避免了在运行时出现ClassCastException。

泛型虽然通常会被大量的使用在集合当中,但是我们也可以完整的学习泛型只是。泛型有三种使用方式,分别为:泛型类、泛型方法、泛型接口。将数据类型作为参数进行传递。

1.泛型类的使用:

第一步:
在类上挂上一个泛型标志符可以是T和E等

第二步:
声明一个泛型标志符的成员变量

```
public class Genericity<T> {
    private T t;


    public Genericity(T t){
        this.t=t;
    }
    public T getT(){
        return t;
    }
}
```

接下来测试一下,构造方法接收的类型,这里就随便搞一下String和Integer了。
注意,这里只能传类类型比如String Integer禁止int 之类的参数

```
 public static void main(String[] args) {
        Genericity<String> genric =new Genericity<String>("hello world");
        System.out.println(genric.getT());
        Genericity<Integer> genric2=new Genericity<Integer>(18);
        System.out.println(genric2.getT());
    }
```

2.泛型方法

泛型方法可以直接把形参弄成泛型标志符的参数,但是每次要指定类型十分麻烦。

也可以这么写

有返回值的泛型方法

可以看到它的返回值也是有泛型的。

3.泛型接口

泛型接口和泛型类差不多,直接在接口名后加泛型标志符。

```
public interface Generic<T> {
    public void show(T t);
}

```

实现这个泛型接口的时候,如果不确定泛型的类型,那么实现的那个类后面也要加泛型标志符否则报错。

```
public class GenericImpl<T> implements Generic<T> {

    @Override
    public void show(T t) {
        System.out.println("没有设置类型");
    }

}

```

如果确定了接口类型的时候,实现泛型接口的类后面的泛型标志符可以省略。


调用泛型的方法。

posted @ 2022-04-27 19:01  长情c  阅读(131)  评论(0)    收藏  举报