尝试编译时,我的代码无法编译:
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>
答案 0 :(得分:3)
假设它与earlier question中的类相同,LinkedGenericLog<T>
的唯一构造函数就是这个:
public LinkedGenericLog(String name)
因此,当你构建一个时,你需要传入一个名字。例如:
GenericLogInterface<Float> genFloatLog = new LinkedGenericLog<Float>("Some name");
如果您不想传递名称,则需要更改LinkedGenericLog
- 添加无参数构造函数。在这种情况下,您希望日志具有什么名称?
答案 1 :(得分:1)
这一行...
GenericLogInterface<String> genStringLog = new LinkedGenericLog<String>();
表示您正在尝试调用无参数构造函数。
如果您收到错误,那么您的LinkedGenericLog
类必须没有无参数构造函数。 Java provides one by default,除非您定义其他构造函数,它们接受参数。