/*
 * Key
 * 索引キーの基底インターフェース
 */
package org.logical_paradox.fts;

import java.io.Serializable;

public abstract class Key implements Serializable {
	protected Object _o = null;
	protected final String _k;

	// コンストラクタ
	protected Key( String key ) throws IllegalArgumentException {
		if( key == null ) {
			throw new IllegalArgumentException( "キーがnullです" );
		}
		_k = key;
	}

	// キーを返す
	public String getKey() {
		return _k;
	}
	public int length() {
		return _k.length();
	}

	public String toString() {
		return _k;
	}

	// 比較メソッド
	public boolean equals( Object k ) {
		return ((Key)k).getKey().equals( _k );
	}
	// キーに添付されているオブジェクトを返す
	public Object getObject() {
		return _o;
	}
	// キーにオブジェクトを添付する
	public void setObject( Object o ) {
		_o = o;
	}

	// ハッシュコード
	public int hashCode() {
		return _k.hashCode();
	}
}

// end of Key.java
