0

コンパイルしようとすると、コードがコンパイルできません。

package ch02.genericStringLogs;

public class DemoGenericLogs {
  public static void main(String[] args) {
    GenericLogInterface<Float> genFloatLog = new LinkedGenericLog<Float>();
    LLGenericNode<Float> node0 = new LLGenericNode<Float>(2.2);
    LLGenericNode<Float> node1 = new LLGenericNode<Float>(3.3);
    LLGenericNode<Float> node2 = new LLGenericNode<Float>(4.4);
    LLGenericNode<Float> node3 = new LLGenericNode<Float>(5.5);
    genFloatLog.insert(node0);
    genFloatLog.insert(node1);
    genFloatLog.insert(node2);
    genFloatLog.insert(node3);

    System.out.println(genFloatLog.size());
    System.out.println(genFloatLog.toString());
    genFloatLog.clear();
    System.out.println(genFloatLog.size());

    GenericLogInterface<String> genStringLog = new LinkedGenericLog<String>();
    LLGenericNode<String> string0 = new LLGenericNode<String>("one");
    LLGenericNode<String> string1 = new LLGenericNode<String>("two");
    LLGenericNode<String> string2 = new LLGenericNode<String>("three");
    LLGenericNode<String> string3 = new LLGenericNode<String>("four");

    System.out.println(genStringLog.size());
    System.out.println(genStringLog.toString());
    genStringLog.clear();
    System.out.println(genStringLog.size());
  }
}

このエラーが発生します:

Error:
    part1/ch02/genericStringLogs/DemoGenericLogs.java:5: cannot find symbol
    symbol  : constructor LinkedGenericLog()
    location: class ch02.genericStringLogs.LinkedGenericLog<java.lang.Float>
4

2 に答える 2

3

前の質問のクラスと同じクラスであると仮定すると、のコンストラクターLinkedGenericLog<T>は次の1つだけです。

public LinkedGenericLog(String name)

したがって、作成するときは、名前を渡す必要があります。例えば:

GenericLogInterface<Float> genFloatLog = new LinkedGenericLog<Float>("Some name");

名前を渡す必要がない場合は、変更する必要がありますLinkedGenericLog-パラメーターなしのコンストラクターを追加します。その場合、ログにどのような名前を付けますか?

于 2013-02-27T22:45:34.433 に答える
1

この行...

GenericLogInterface<String> genStringLog = new LinkedGenericLog<String>();

引数なしのコンストラクターを呼び出そうとしていることを示します。

エラーが発生した場合は、クラスに引数なしのコンストラクターがあってはなりませLinkedGenericLogん。引数を取る他のコンストラクターを定義しない限り、Javaはデフォルトで1つ提供します。

于 2013-02-27T22:44:50.443 に答える