Java泛型

目录

一、泛型的理解

二、使用

三、自定义泛型结构

四、细节

五、泛型方法

六、泛型在继承方面的体现

七、通配符的使用


一、泛型的理解

所谓泛型就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时确定。

二、使用

1.集合中使用泛型

ArrayList<Integer> list = new ArrayList<Integer>();

2.嵌套泛型

Set<Map.Entry<String,Integer>> entry = map.entrySet();

3.总结

①集合接口或集合类在JDK5.0时都修改为带泛型的结构。

②在实例化集合类时,可以指明具体的泛型类型。

③指明完以后,在集合类或接口时内部结构使用到类的泛型的位置都指定为实例化时的具体类型。

④泛型的类型必须是类,不能是基本数据类型,用到基本数据类型就用想对应的替换。

⑤如果实例化时未用泛型,默认类型为Object类型。

三、自定义泛型结构

泛型类、泛型接口、泛型方法

1.泛型类

public class Order<T>{

    String name;

    T order t;

}

实例化时,给T赋值,若未赋值,则默认为object,不建议不赋值。

2.子类继承泛型类

①子类在继承带泛型的父类时,指明了泛型类型,则实例化子类对象时,不再需要指明泛型。

class Suborder extends Order<Integer>{

}

当Suborder,Order<Integer>当做普通类即可。

②SubOrder<T>为泛型类

class SubOrder<T> extends Order<T>{

}

①②总结:

泛型父类只能由泛型子类或普通子类继承。

普通父类只能由普通子类或泛型子类继承。

四、细节

①<E1,E2,E3>多个泛型函数。

②写泛型类的构造器时不要加泛型。

③泛型不同的引用,不能相互赋值。

④泛型要么一律用,要么一律不用。

⑤泛型类/接口中的静态方法,不能用泛型类型。

⑥异常类不能是泛型类。

⑦泛型数组:T[] arr = (T[])new Object[10];

五、泛型方法

在方法中出现了泛型的结构,泛型参数与类的泛型参数没有任何关系。即泛型方法所属的类是不是泛型都没有关系。在调用方法的时候指明泛型的具体类型。

格式:

public <E> 方法体

泛型方法可以声明为静态。原因:泛型参数在调用方法时确定的并非在实例化类时确定。

个人理解:Object是各种类的对象都可以,泛型是指定某一类,可以更好地体现封装性。

六、泛型在继承方面的体现

类A是类B的父类,G<A>和G<B>不具备子父类关系,二者是并列关系。类A是类B的父类,A<G>与B<G>具备子父类关系。

七、通配符的使用

1.?的使用

List<?> list = null;

list = new ArrayList<String>();

list = new ArrayList<Integer>();

G(A)与G(B)的公共父类G(?)。

对于List<?>就不能向其内部添加数据了。除了添加null之外。

对于List<?>允许读取数据,返回Object类型。

2.有限制条件的通配符的使用。

?extend Person 等价于 ?<= Person。即调用后返回的接收类型最小是Person。

? super Person 等价于 ?>= Person.即接收类型只为Object。

例如:

List<? extend Person>等价于List<*> *最大为Person,其余全是Person的父类。

注意:父类转为子类的强制转换前提是:子类已经转为父类了,此时父类才可以转为子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想进阿里的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值