2010-10-07 9 views
2

我在這裏得到一個錯誤,說我沒有定義一個方法,但它在代碼中是正確的。當我正視它時,獲取有關未定義方法(構造函數)的錯誤? (Java)

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定義了構造函數,爲什麼當我嘗試在返回語句中傳遞它時沒有聲明?

回答

3

您可能需要new SubClass(c, x)而不是SubClass(c, x)。在Java中,您以與方法不同的方式調用構造函數:使用new關鍵字。

More on the subject

2

我想你希望它是:

         // new is needed to invoke a constructor 
return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x)); 
1

由於正確地指出別人有調用構造函數需要new失蹤。

你的情況發生了什麼是因爲缺少new你的調用被視爲方法調用,並且在你的類中沒有方法SubClass(c,x)。和錯誤未定義的方法是在你的情況下,正確的,因爲沒有一個叫SubClass(c, x)

您需要更正同樣的方法:

return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x)); 
相關問題