什么是泛型?

概念

所谓泛型,可以顾名思义的理解为广泛的类型。我们通常使用的参数都是指定类型的,即限定了参数的类型,如果我们不想限定参数的类型那怎么办呢?会有人想到使用Object类型,但是Object有时候也会因为类型不匹配而出错。那么此时我们就可以利用泛型来解决问题了。使用泛型,就是在写一个类或方法或接口的时候可以不指定类型,而在使用方法、类、接口的时候再给定具体的类型。

泛型类

如果需要写一个类,而暂时不指定类中使用到的某个数据类型,则可以采用以下的方式:

class Person<T>{
            private T data;
            public Person() {
            }
            public T getData() {
                return data;
            }

            public void setData(T data) {
                this.data = data;
            }

            public Person(T data) {
                this.data = data;
            }
        }

使用泛型类创建对象:

Person<String> p = new Person<>();

其中尖括号中的String是给定的引用数据类型

泛型接口

格式:

public interface IntercaceName<T>{
T getData();
}

使用接口时,可以指定泛型类型,也可以不指定

指定类型:

public class Interface1 implements IntercaceName<String> {
private String text;
@Override
public String getData() {
return text;
}
}

不指定类型:

public class Interface2<T> implements IntercaceName<T> {
private T data;
@Override
public T getData() {
return data;
}
}

泛型方法

private static <T> T 方法名(T a, T b) {}

泛型中的通配符 ?

类型通配符是使用?代替方法具体的类型实参。
1 <? extends Parent> 指定了泛型类型的上届
2 <? super Child> 指定了泛型类型的下届
3 <?> 指定了没有限制的泛型类型

作用
1、 提高代码复用率
2、 泛型中的类型在使用时指定,不需要强制类型转换(类型安全,编译器会检查类型)

注意
在编译之后程序会采取去泛型化的措施。
也就是说Java中的泛型,只在编译阶段有效。
在编译过程中,正确检验泛型结果后,会将泛型的相关信息擦出,并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法。也就是说,泛型信息不会进入到运行时阶段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值