![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java进阶
文章平均质量分 89
大胃粥
掘金https://juejin.im/user/2805609401693943/posts
展开
-
Java Comparable与Comparator
Comparable实现了 Comparable 接口类的对象,可以被用来排序。例如一个 Person 类实现了 Comparable 接口,如下public class Person implements Comparable<Person>{ public final String name; public final int age; public Person(String name, int age) { this.name = name;原创 2021-02-15 16:57:48 · 146 阅读 · 1 评论 -
Java 泛型通配符
为何要使用泛型通配符根据里氏替换原则,我们通常是用基类的引用指向子类对象,例如class Shape {}class Circle extends Shape {}class Square extends Shape {}Shape shape = new Circle();对于泛型来说,下面的代码是错误的// 不支持这种泛型语法List<Shape> shapes = new ArrayList<Cirlce>();这种泛型语法被定义为错误的语法。由于泛型擦原创 2020-11-25 17:44:55 · 167 阅读 · 0 评论 -
Java泛型边界
上一篇文章 Java神秘的泛型擦除 中提到,泛型擦除会默认擦除到 Object 这个边界,因此可以在泛型对象上调用 Object 的任何方法,而不能实际泛型类型的方法。然而,泛型是可以通过 extends 指定边界的。通过指定边界,我们就不必再局限于只能调用 Object 的方法,我们现在就可以根据指定的边界做更多有意义的事情。interface IHello { void sayHello();}class Person<T extends IHello> { pri原创 2020-11-23 10:48:38 · 646 阅读 · 0 评论 -
Java神秘的泛型擦除
在学习Java泛型的时候,最重要的一个概念是泛型擦除,请看如下代码public class Holder<T> { private T item; public void set(T t) { item = t; } public T get() { return item; } public static void main(String[] args) { Holder<String原创 2020-11-20 17:53:08 · 89 阅读 · 0 评论 -
为何要使用Java泛型
Java 泛型一直被编程办所诟病,但是其实它也有优点,这促使我们使用泛型。假如有一个持有对象的容器类,我们想让它能够持有任何类型的对象,如下public class Holder { private Object object; public void set(Object obj) { object = obj; } public Object get() { return object; }}Holder 类使用 Object 类的对象来保存任何类型的对原创 2020-11-20 17:15:48 · 446 阅读 · 0 评论 -
如何写好 Java equals 方法
文章目录前言操作符==equals 方法为什么要覆写equals方法equals 约定自反性对称性传递性一致性非空性写好 equals 方法如何比较比较的性能写 equals 的科学方法前言equals 方法是面试中一个常客,我以前面试的时候,被人问了一些比较刁钻的问题,但是我回答的并不是很好。这篇文章就对 equals 方法进行一个全方位的分析与总结。操作符==操作符 == 也是用于比较两个对象,如果比较的是基本类型,那么比较是对象的值,例如int a = 10;int b = 11;S原创 2020-10-29 20:38:21 · 800 阅读 · 0 评论 -
Java ArrayList vs. Vector
ArrayList 和 Vector 的比较是面试中一个常见的问题,要想回答得好,还需要下点工夫,本文来总结下它们之间的相似以及区别。相似点先看下相似点。首先我们都是由数组来实现的,并且它们都实现了 RandomAccess 接口,因此支持快速随机访问,也就是通过索引快速定位元素。因此从本质上来说,它们之间是可以能通用的。区别Vector 现在很少用到,这是因为它与 ArrayList 之间的区别造成的。线程安全Vector 是线程安全的类,因为它的大部分方法都是通过 synchronized原创 2020-10-26 22:53:10 · 158 阅读 · 0 评论 -
Java RandomAccess 接口有什么用?
文档上是这样描述这个接口的 Marker interface used by List implementations to indicate that they support fast (generally constant time) random access. The primary purpose of this interface is to allow generic algorithms to alter their behavior to provide good per原创 2020-10-22 19:43:57 · 408 阅读 · 1 评论