(java.lang.)Object [1]

私は全てのオブジェクトのスーパークラスです。

メソッド

  • hashCode - オブジェクトのハッシュ・コード値を知らせる
  • toString - オブジェクトの文字列表現を取得する
  • clone - オブジェクトのクローンを作成する
  • equals - 引数に指定されたオブジェクトが同じか真偽する
  • wait - 実行中のスレッドを一時待機させる

equalsオーバーライドの定石

public boolean equals(Object o) {
if (o == this) return true;
if (o == null) return false;
if(!(o instanceof Monster)) return false;
Monster mon = (Monster) o;
if (!this.fieldName.trim().equals(mon.fieldName.trim())) {
   return false;
}
return true;
}

hashCodeオーバーライドの定石

class Hero {
    String name;
    int hp; 

    public int hashCode() {
        int result = 37;    // 0以外ならなんでも良い
        result = result * 31 + name.hashCode();    // 31:奇数かつ素数
        result = result * 31 + hp.hashCode();
        return result;
    }   
}

clone実装の例

クラスのクローン機能を利用するためには、Cloneableインターフェースを実装し、cloneメソッドを改めてオーバーライドする必要がある。ちなみに Cloneble はマーカーインターフェース。

public class Hero implements Clonable {
    String name;
    int hp; 
    Sword sword;

    public Hero clone() {
        Hero clo = new Hero();
        clo.name = this.name;
        clo.hp = this.hp;
        clo.sword = this.sword;    // shallow copy
        // clo.sword = this.sword.clone();    // deep copy
        return clo;
    }   
}