2

私はJavaで何かを理解するのに苦労しています。メソッド giveCode() を使用してオブジェクトの整数値を返すにはどうすればよいですか。これは講師によって事前に作成されたコードで、オブジェクトの整数値を返すために使用する必要があり、ハッシュ テーブルのハッシュ値を作成するときに使用されます。

ハッシュコード.java

// Interface for HashCode. Has only one method declaration
public interface HashCode {

    // For an input object, computes and returns its HashCode as an integer
        public int giveCode(Object o);

}

StringHashCode.java (このクラスに HashCode クラスを実装することになっているため、このクラスを作成しました)

public abstract class StringHashCode implements HashCode{


} 

コード値を返すだけで、メインでこのようなことを試したので、それがどのように機能するかを確認できますが、何も機能していないようです:

System.out.println(new StringHashCode.giveCode(example_object));

または

System.out.println(new StringHashCode.giveCode(example_object.hashCode()));

または

System.out.print(HashCode.giveCode(example_object));

私はJavaにはまったく慣れていませんが、他のOOP言語の経験は豊富ですが、これの問題を理解できないようです。おそらく何かばかげているように感じますが、それを推測することはできません.

4

3 に答える 3

1

講師がそのインターフェースを提供したので、それを実装する必要があります。そして、それはクラスかもしれません。必要のない別のインターフェイスである可能性があります。抽象クラスはソリューションには役に立たないため、単純なクラスを使用してそのインターフェイスを実装します。

class HashCodeImpl implements HashCode {
    @Overwide
    public int getCode(Object obj) {
        return obj.hashCode();
    }
}

メインメソッドでは、このクラスを次のように使用する必要があります

class Main {
    public static void main(String[] args){
        HashCodeImpl impl = new HashCodeImpl();
        System.out.println(impl.getCode(new String()));
    }
}

あなたの質問では、どのシステムもコンパイルされないため、どのように出力が得られないのかわかりません。

 System.out.println(new StringHashCode.giveCode(example_object));

このクラスの giveCode メソッドは静的ではないため、コンパイルされません

 System.out.println(new StringHashCode.giveCode(example_object.hashCode()));

同じ理由で、giveCode は静的ではないためコンパイルされず、オブジェクトを渡す必要があり、クラスにはコードが返されると想定されます。この場合、メソッドにハッシュ コードを渡しています。

 System.out.print(HashCode.giveCode(example_object));

HashCode は、具体的なクラスを作成するために実装する必要があるプロトタイプのようなインターフェイスであるため、コンパイル エラーが発生します。

于 2013-10-15T23:28:58.903 に答える
0
  1. () を使用せずにクラスをインスタンス化しようとしています。あなたが望むだろうnew StringHashCode()
  2. 抽象クラスをインスタンス化しようとしていますが、これは不可能です。
  3. GiveCode メソッドはどこにも実装していないので、当然呼び出すことはできません。
于 2013-10-15T23:20:18.557 に答える