Получение ошибки о неопределенном методе (конструкторе), когда я смотрю прямо на него? (Джава) - PullRequest
2 голосов
/ 07 октября 2010

Я получаю сообщение об ошибке, в котором говорится, что я не определил метод, но он указан в коде.

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                        ^^^^^^
      }

Я определил этот конструктор для подкласса, почему он говорит, что я этого не сделал, когда пытаюсь передать его в этом операторе возврата?

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Вы, вероятно, хотите new SubClass(c, x) вместо SubClass(c, x).В Java вы вызываете конструктор иначе, чем метод: с ключевым словом new.

Подробнее по теме .

2 голосов
/ 07 октября 2010

Я думаю, вы хотите, чтобы это было:

                                       // new is needed to invoke a constructor 
return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x));
1 голос
/ 07 октября 2010

Как правильно отметили другие, для вызова конструктора отсутствует new.

В вашем случае происходит следующее: из-за отсутствия new ваш вызов обрабатывается как вызов метода, и вВаш класс там не является методом SubClass (c, x).И метод Error undefined является правильным в вашем случае, так как нет метода с именем SubClass(c, x)

Вам необходимо исправить то же самое:

return new OtherSubClassExtendsExampleClass(c, x0, new SubClass(c, x));
...