跳到主要内容

Object类中常用的方法

  1. getClass():获取类的 class 对象
  2. hashCode():获取对象的 hashCode 值,支持此方法是为了提高哈希表的性能
  3. equals():判断两个对象是否相等,比较的是值和地址,子类可重写进行自定义
  4. clone():克隆方法
  5. toString():获取对象的字符串表示,如果没有重写,应用对象将打印地址值
  6. notify():随机选择一个在该对象上调用 wait 方法的线程,解除其阻塞状态。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
  7. notifyAll(): 解除所有在该对象上调用 wait 方法的线程的阻塞状态。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
  8. wait():使当前线程进入等待状态,直到被其他线程通过 notify () 或者 notifyAll() 唤醒。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
  9. finalize():对象回收时调用

clone()

  • 实现 clone() 方法需要实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常
  • Object 中的 clone() 方法是一个 native 方法,使用操作系统底层的语言实现,执行效率更高
  • clone() 为浅克隆

浅克隆与深克隆

原型模式

  • 使用克隆快速创建对象

扩展

  • Cloneable 接口和 Serializable 接口的代码非常简单,都是空接口,也被称为标识接口,标识接口中没有任何方法定义,作用是告诉 JRE 这些接口的实现类是否具有某些功能,比如是否支持克隆、是否支持序列化等