前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >泛型 T

泛型 T

作者头像
收心
发布2022-06-27 13:32:32
2220
发布2022-06-27 13:32:32
举报
文章被收录于专栏:Java实战博客

1、什么是泛型

Java泛型(generics)是JDK5中引入的一个新特性。

本质就是万能类型。我们定义引用类型的变量需要指定其是什么Class的,使用泛型就可以代替其Class的作用!泛型不支持基本类型。使用时可能会自动装箱!

2、泛型好处

下面是ArrayList的源码

代码语言:javascript
复制
public class ArrayList<E> extends AbstractList<E>

我们看到:创建ArrayList集合需要我们指定集合元素的类型。我们在集合添加元素的时候,就不能添加与此类型没有直接关系的元素了。所以泛型的好处是:提供了编译器的错误检测。

3、泛型类

代码语言:javascript
复制
public class FanXingClass<T> {

    // 成员变量,创建对象时,指定成员变量的类型
    private T t;

    // 代参构造方法
    public FanXingClass(T t) {
        this.t = t;
    }
}

使用泛型类

代码语言:javascript
复制
        String s = "Hello!";
        FanXingClass fanXingClass = new FanXingClass(s);
        
        // JDK8之后就支持:new后的<>可不填写类名
        FanXingClass<String> fanXingClass1 = new FanXingClass<>(s);

泛型使用无参构造的时候,泛型认定为Object!

子类是泛型类的话,子类和父类的泛型类型要一致

4、泛型接口

代码语言:javascript
复制
/**
 * 泛型接口
 * @param <T>
 */
public interface Generator<T> {
    T getKey();
}
/**
 * 泛型接口的实现类,是一个泛型类,
 * 那么要保证实现接口的泛型类泛型标识包含泛型接口的泛型标识
 * @param <T>
 * @param <E>
 */
public class Pair<T,E> implements Generator<T> {

    private T key;
    private E value;

    public Pair(T key, E value) {
        this.key = key;
        this.value = value;
    }

    @Override
    public T getKey() {
        return key;
    }

    public E getValue() {
        return value;
    }
}

泛型其实没什么直接用处,我就不一点点记录笔记了。只记录重点内容,与常见的泛型使用场景

泛型擦除

编译期的泛型T,在JVM的字节码转换为对应的类型,大部分没声明的都会被被转换为Object!

特殊说明: 以上文章,均是我实际操作,写出来的笔记资料,不会盗用别人文章!烦请各位,请勿直接盗用!转载记得标注来源!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、什么是泛型
  • 2、泛型好处
  • 3、泛型类
  • 4、泛型接口
  • 泛型擦除
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档