java 泛型的理解(一)

泛型是java语言提供的一种扩展,允许传入不同的参数,生成不同的参数的类型的对象,但是这种处理方式实在逻辑上的处理,但是在编译的的时候没有这种区别。

泛型也是分为 类泛型,方法泛型,字段泛型

public class Box <T> { //类泛型
     public T data; // 字段泛型
<span style="white-space:pre">	</span>/方法泛型
     public Box( T t){
         this.data = t; 
     }

     public T getData() {
         return data;
     }
<span style="white-space:pre">	</span>
     public T fun(T t) {
          return t;
     }
     public <S>S test(S s) {
          return s;
     }
     
     public <S extends T>  testExtendsS( S s) {
          return s;
     }
     
     public <S extends T> testExtendsT ( T t) {
          return t
     }
}

上面代码中:  public T fun(T t) 和 public <S> S test(S s);  

fun(T t)方法返回的参数的类型T是和类的型泛型T相关的,但是 test(S s)方法返回的参数S 是和传入的参数类型S是一致的默认的情况类型为Ojbect。

假如 public T fun(T t)方法写成 public <T> T fun (T t);那么此时返回的类型为和传入的参数 t的类型相关默认类型为Object.效果和 test(S s) 是一样的,

但是会和 public T fun(T t)混淆 所以不建议写成这样。

这里注意:

 Java泛型中的标记符含义:

 E - Element (在集合中使用,因为集合中存放的是元素)

 T - Type(Java 类)

 K - Key(键)

 V - Value(值)

 N - Number(数值类型)

-  表示不确定的java类型

 S、U、V  - 2nd、3rd、4th types

上面的java 泛型中的标记含义只是建议如此,并不是在语法上用限制。


public class Box <T extends Number> {
     public T data;
    public List<? extends Number> n;
<span style="white-space:pre">	</span>public List<? super Number> s;
     public Box( T t){
         this.data = t; 
     }

     public T getData() {
         return data;
     }

     public T fun(T t) {
          return t;
     }
     public <S>S test(S s) {
          return s;
     }
     
     public <S extends T>  testExtendsS( S s) {
          return s;
     }
     
     public <S extends T> testExtendsT ( T t) {
          return t
     }
}

上面的类泛型 Box (T extends Number)中 extends 是指这个 T类型必须是继承自 Number的或者是本身。

假如是Box(T super Number)中的 super是指 这个T类型必须是本身或者是Number的超类直至Ojbect.

泛型中的通配符 ?的相关知识请看看 java 泛型中的有界类型


Java泛型详解
java 泛型中的有界类型
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值