![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
泛型
文章平均质量分 76
weixin_46722612
这个作者很懒,什么都没留下…
展开
-
泛型——泛型和反射
Java的部分反射API也是泛型。例如:Class< T>就是泛型:// compile warning:Class clazz = String.class;String str = (String) clazz.newInstance();// no warning:Class<String> clazz = String.class;String str = clazz.newInstance();调用Class的getSuperclass()方法返回的Cla原创 2021-03-10 09:12:04 · 69 阅读 · 0 评论 -
泛型——super通配符
我们前面已经讲到了泛型的继承关系:Pair不是Pair的子类。考察下面的set方法:void set(Pair<Integer> p, Integer first, Integer last) { p.setFirst(first); p.setLast(last);}传入Pair是允许的,但是传入Pair是不允许的。和extends通配符相反,这次,我们希望接受Pair类型,以及Pair、Pair,因为Number和Object是Integer的父类,setFirs原创 2021-03-09 23:44:56 · 1706 阅读 · 0 评论 -
泛型——extends通配符
我们前面已经讲到了泛型的继承关系:Pair< Integer>不是Pair< Number>的子类。假设我们定义了Pair< T>:public class Pair<T> { ... }然后,我们又针对Pair< Number>类型写了一个静态方法,它接收的参数类型是Pair< Number>:public class PairHelper { static int add(Pair<Number> p)原创 2021-03-09 23:04:11 · 864 阅读 · 0 评论 -
泛型——擦拭法
泛型是一种类似”模板代码“的技术,不同语言的泛型实现方式不一定相同。Java语言的泛型实现方式是擦拭法(Type Erasure)。所谓擦拭法是指,虚拟机对泛型其实一无所知,所有的工作都是编译器做的。例如,我们编写了一个泛型类Pair,这是编译器看到的代码:public class Pair<T> { private T first; private T last; public Pair(T first, T last) { this.first原创 2021-03-09 20:07:13 · 149 阅读 · 0 评论 -
泛型——编写泛型
编写泛型类比普通类要复杂。通常来说,泛型类一般用在集合类中,例如ArrayList,我们很少需要编写泛型类。如果我们确实需要编写一个泛型类,那么,应该如何编写它?可以按照以下步骤来编写一个泛型类。首先,按照某种类型,例如:String,来编写类:public class Pair { private String first; private String last; public Pair(String first, String last) { this.原创 2021-03-09 19:32:33 · 533 阅读 · 0 评论 -
泛型——使用泛型
使用ArrayList时,如果不定义泛型类型时,泛型类型实际上就是Object:// 编译器警告:List list = new ArrayList();list.add("Hello");list.add("World");String first = (String) list.get(0);String second = (String) list.get(1);此时,只能把< T >当作Object使用,没有发挥泛型的优势。当我们定义泛型类型< String>原创 2021-03-09 19:06:44 · 64 阅读 · 0 评论 -
泛型
我们先观察Java标准库提供的ArrayList,它可以看作“可变长度”的数组,因为用起来比数组更方便。实际上ArrayList内部就是一个Object[]数组,配合存储一个当前分配的长度,就可以充当“可变数组”:public class ArrayList { private Object[] array; private int size; public void add(Object e) {...} public void remove(int index) {.原创 2021-03-09 12:51:04 · 39 阅读 · 0 评论