eclipse不支持泛型_Java基础笔记04泛型

1 概念

泛型的定义:

泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。

Java语言的泛型因为存在类型擦除的概念,所以被称之为伪泛型。

使用泛型机制编写的程序代码要比那些杂乱的使用Object变量,然后再进行强制类型转换的代码具有更好的安全性和可读性。泛型对于集合类来说尤其有用。

泛型程序设计(Generic Programming)意味着编写的代码可以被很多不同类型的对象所重用。

泛型的类型参数只支持引用类型,如传递类似int 的基本类型,则Java会利用自动装箱机制转为Integer,但是像int[] 是泛型不支持的。

泛型的参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。1.

1.1 基本概念

简单介绍下泛型的一些基本术语,以ArrayListArrayList做简要介绍:

  • ArrayList称为泛型类型

  • ArrayList中的 E称为类型变量或者类型参数

  • ArrayList称为参数化的类型

  • ArrayList中的integer称为类型参数的实例或者实际类型参数。

  • ArrayList中的念为typeof Integer

  • ArrayList称为原始类型

注意:类型变量使用大写形式,且比较短,这是很常见的。在Java库中,使用变量E表示集合的元素类型,K和V分别表示关键字与值的类型。(需要时还可以用临近的字母U和S)表示“任意类型”。

代码示例:

JavaLearning:com.prd.generic.GenericTest

2 泛型类

一个泛型类(generic class)就是具有一个或多个类型变量的类。定义一个泛型类十分简单,只需要在类名后面加上<>,再在里面加上类型参数。

类型变量的作用域就是类的实例部分,包括方法以及任何实例初始化语句块。类的静态部分不会受到泛型参数化的影响,并且,在静态方法或静态初始化程序中,类型变量是不可见的。

@Slf4jpublic class Pair<T extends Comparable> {
        private T first;    private T second;    public Pair() {
        }    public Pair(T first, T second) {
            this.first = first;        this.second = second;    }    public T getFirst() {
            return first;    }    public void setFirst(T first) {
            this.first = first;    }    public T getSecond() {
            return second;    }    public void setSecond(T second) {
            this.second = second;    }    public <T> void getAdd(T t1,T t2) {
            log.info("t1 is {},t2 is {}",t1,t2);    }    @Override    public String toString() {
            return "Pair{" +                "first=" + first +                ", second=" + second +                '}';    }}

2.1 泛型类的继承

泛型类型可以像任何其他类一样进行子类化,通过泛型或非泛型的子类可以做到这一点。

非泛型的子类必须扩展父类型的一个特定实例,填充必须的参数以使其变得实际。 示例:

class DateList extends ArrayList<Date>{}

一个泛型类的泛型子类可以扩展类的一个具体实例(就像前面的示例所示),或者可以共享一个类型变量,该类型变量通过向上传递可以对父类进行实例化:

示例:

class AdjustableTrap<T> 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值