JAVA范型

技术 专栏收录该内容
44 篇文章 0 订阅

JAVA泛型

Reference

Why

不使用范型带来的危害:当我们将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。取出集合元素时需要人为的强制类型转化到具体的目标类型,且很容易出现“java.lang.ClassCastException”异常。

范型可以提供编译时类型安全监测机制。

What

泛型,即“参数化类型”, 类似于方法中的变量参数。定义方法时有形参,然后调用此方法时传递实参。

  • 泛型只在编译阶段有效.
  • 泛型的类型参数只能是类类型,不能是简单类型。

How

  1. 泛型类:
/*
 * 泛型类
 * Java库中 E表示集合的元素类型,K 和 V分别表示表的关键字与值的类型
 * T(需要时还可以用临近的字母 U 和 S)表示“任意类型”
 */
public class Pair<T> {}
  1. 泛型接口
public interface Generator<T> {}
  1. 泛型方法
    public static <T> T getMiddle(T a) {}
  1. 通配符: 解决当具体类型不确定的时候,这个通配符就是 ? ;当操作类型时,不需要使用类型的具体功能时,只使用Object类中的功能。那么可以用 ? 通配符来表未知类型。
ArrayList heroList<? extends Hero> 
ArrayList heroList<? super Hero>
ArrayList list<?>

实际使用

为了将reader中已有的方法暴露给plugin package使用,引入了sdk package。在sdk package中定义 IPosition interface,采用泛型类,降低reader的修改范围。
Reader:

public interface Element extends IElements<Position> {
	public Position getStartPosition();
}

SDK:

public interface IElement<T extends IPosition> {
	public T getStartPosition();
}
  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值