1

このクラスのオブジェクトとしてクラスのbyte[]オブジェクトを配置する必要があるメンバーのクラスがあります。以下は私が書いたものですが、期待どおりに機能していません。TreeMapkeyputget

import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.Arrays;    

public class XTObject Comparable<XTObject>{
    public byte[] data; 
    public XTObject(){

    }
    public XTObject(final byte[] in) {
        this.data = in;
    }   


    @Override
  public boolean equals(final Object obj) {
        if (this == obj)
      return true;
   if (obj == null)
      return false;
   if (getClass() != obj.getClass())
      return false;
   XTObject other = (XTObject) obj;
   if (!Arrays.equals(data, other.data))
      return false;
   return true;
    }
    @Override
  public int hashCode() {
        return Arrays.hashCode(data);       
    }
    @Override
    public int compareTo(XTObject o) {
        ByteBuffer left = ByteBuffer.wrap(this.data);
        ByteBuffer right = ByteBuffer.wrap(o.data);
        return left.compareTo(right);

    }

}

Put は正常に動作していると思いgetますが、null ポインター例外が発生しています。私はJavaが初めてです。

4

1 に答える 1

2

data構築中にメンバーが常に初期化されること、または潜在的なnull値を処理することを確認する必要があります。
データメンバーが初期化されていない場合は、、およびメソッドで公開されますNullPointerExecption。 TreeMapはSortedMapであり、マップ要素を並べ替えるためにcompareToメソッドを使用します。equalshashCodecompareTo

于 2013-03-19T07:42:49.217 に答える