我在这里收到错误,说我没有定义方法,但它在代码中是正确的。
class SubClass<E> extends ExampleClass<E>{
Comparator<? super E> c;
E x0;
SubClass (Comparator<? super E> b, E y){
this.c = b;
this.x0 = y;
}
ExampleClass<E> addMethod(E x){
if(c.compare(x, x0) < 0)
return new OtherSubClassExtendsExampleClass(c, x0, SubClass(c, x));
//this is where I get the error ^^^^^^
}
我确实为SubClass定义了构造函数,为什么当我尝试在返回语句中传递它时我没有说过?
答案 0 :(得分:3)
您可能需要new SubClass(c, x)
而不是SubClass(c, x)
。在java中,您使用与方法不同的方式调用构造函数:使用new
关键字。
答案 1 :(得分:2)
我认为你希望它是:
// new is needed to invoke a constructor
return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x));
答案 2 :(得分:1)
正如其他人正确指出的那样,缺少调用构造函数所需的new
。
在你的案例中发生的事情是由于缺少new
你的调用被视为方法调用,而在你的类中没有方法SubClass(c,x)。并且错误未定义的方法在您的情况下是正确的,因为没有名为SubClass(c, x)
您需要更正相同的内容:
return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x));