泛型小结20200320

我再过一遍泛型知识点的初衷,是想知道是否可以在使用时限制泛型不能传递某一种类型

关于泛型,在阅读了一些文章后,想要做写总结:

  •    1 泛型即把类型参数化,它可以用在类上,接口上,方法上
  •    2 如何使用;即在需要的地方加上<T>  字母可以自定义未其他的大写字母
  •    3 写在什么位置呢?

        类上: public class Test1<T>{}
        接口上L:public interface Test2<T>{}
        方法上:  public void test2(T t){}   写在方法上,还不是泛型方法,在成员方法上,可以像这样对参数泛型化,编译也ok,但如果静态方法上要使用泛型的话,就首先要变成泛型方法

  •   4 如何变成泛型方法: 在public和返回值之间标注上泛型

      public <T> T test4(T param){}
      public static<T> T test5(T param){}

  •   5  对比成员方法上使用泛型和泛型方法上使用泛型,普通的成员方法出现的泛型标识是一定和类上的一致的符号,否则cannot resolve symbol error

     普通的成员方法上,之所以使用泛型,是因为在类上已经声明过这个泛型
     泛型方法,则是因为是泛型方法才可以定义泛型+出现泛型标识

  •   6 对于泛型通配符的理解:?

    就像Ojbect是一切对象的一个表示方式,如果类型不确定,泛型中就可以使用? 这个标识符

  •  7 普通的静态成员方法上为什么不能使用泛型呢?

    因为静态成员方法,他不能访问类上定义的泛型,自然就不能使用,如果要使用的话,怎么办,就只能把自己变成泛型方法了

  •  8 泛型方法使用原则是什么呢?

    泛型方法使得方法可以独立于类发生变化,所以能用则用。不能用,又需要用时,就想办法让它拥有泛化能力,当然操作就很简单了,只要加上泛型标识于方法定义的指定位置即可

  •  9 泛型解决了什么问题?

    编译期间使得类型的传入可以多样化,不再局限于单个类型的类型,等到运行期再做检查,这样就可以做到一类多用

  •  10那使用泛型如何对传入的类型加以限制呢?

    泛型上下边界,就可以指定泛型的父类或者子类,从而起到约束作用

  •  11 关于泛型数组要注意什么?

    不能创建一个确切累心的泛型类型的数组
    List<String>[] ls = new ArrayList<String>[10];    错误
    List<String>[] ls = new ArrayList[10];      正确

  •  12 泛型使用还有哪些基本的注意事项?

     泛型必须是包装类型,不可以是基本数据类型

  •  13 说到泛型,在编译阶段有个类型擦除 type erasure,这是什么操作?

     即再编译阶段,会把 <T> <?>---->真实类型
     如果没有做边界限制,则被替换成Object  此为无限制擦除
     如果有,则替换为边界类   此为有限制擦除

 

  • 14 我查看了java核心技术,同样一个知识点,但这本书的讲解太官方了,只有在我看了一些实际问题后,才会对它有进一步了解。工具书,言简意赅,知识点倒是都点到了,可就是缺少了一个理解的过程,晦涩难懂,哎!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值