Java 进阶篇

笔记首页

序号

内容

链接地址

1

Java核心Api

2

Java集合框架接口

3

List实现类

4

Set实现类

5

Map实现类

6

常见接口


文章目录

  • Java 进阶篇
  • Java常见接口
  • Comparable
  • Runnable
  • Cloneable
  • Serializable
  • 优秀博文参考


Java常见接口

Comparable

public interface Comparable<T> {

    public int compareTo(T o);

}
  • 类对象之间比较“大小”往往是很有用的操作,比如让对象数组排序时,就需要依赖比较操作。对于不同的类有不同的语义。如Student类,比较2个学生对象可以比较他们的score分数来评判。
  • 该接口是让我们给我们的实体类增加排序规,比如a与b比,如果a.compareTo(b)大于0说明a比b大,反之b比a大,相等说明一样大
  • 由于对象默认没有实现这个接口,我们无法比较两个对象的大小,当我们的对象具有一定的顺序,而且要是用TreeSet进行存储时,必须实现此接口或者在TreeSet排序时传入一个Comparator比较器,否则报错!
  • 我们的常用的String,包括基本数据类型的封装类,比如Integer,Double等都继承了这个接口。

Runnable

@FunctionalInterface
public interface Runnable {

    public abstract void run();
}
  • Java中实现多线程有两种途径:继承Thread类或者实现Runnable接口;
  • 实际上Thread类也是Runable的子类,我们在Thread初始化是传入一个Runnable,实际上是让Thread去指向新的run方法。
  • Runnable接口非常简单,就定义了一个方法run(),继承Runnable并实现这个方法就可以实现多线程了。但是如果直接对象.run()方法,则没有任何意义。需要我们把这个实现了Runnable的类传入到Thread的构造方法中,再调用Thread的start方法才是线程开启的正确打开方式!

Cloneable

public interface Cloneable {
}

这个接口没有任何内容,当类加载器运行时,如果发现一个类实现类Cloneable接口,那么这个类就可以调用Object的clone方法,没实现则抛出异常。

Object的clone方法是protected修饰的,Object是所有类的父类,子类都可以访问到。

public class Object {
	protected native Object clone() throws CloneNotSupportedException;
}

我们定义一个类,尝试使用一下super的clone方法

public class Demo3 {

    static int haha=2;
    
    public static void main(String[] args) throws CloneNotSupportedException {
        Demo3 demo3 = new Demo3();
        Demo3 clone = demo3.clone();
        System.out.println(clone.haha);
    }

    @Override
    protected Demo3 clone() throws CloneNotSupportedException {
        return (Demo3)super.clone();
    }
}

这里报错了!

ee java 常用类和接口 java三种常用的接口_java

但是如果我们实现了这个接口,就能正常使用,控制台打印2

public class Demo3 implements Cloneable{

这是Java早期的产物,如果换做现在,我们可能会让他实现一个@Clonable注解只要实现了这个注解,就能成功clone()。


Serializable

public interface Serializable {
}

也是一个没有方法的接口,只要JVM运行的时候,扫描到一个类实现了这么一个接口,那么这个类就可以被序列化,即能被对象流ObjectWriter和ObjectReader等一些流对象操作。