Метод параметров типа Jave и проблема конструктора - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть следующие классы: - Класс A - это интерфейс только с одним абстрактным методом «M1» с параметром типа - Класс B реализует A - Класс C является абстрактным классом - Класс D расширяет класс C

Вкл.класс B i Переопределяет метод M1 и пытается создать объекты C, но он не работает

public interface A{ 
    public abstract <R> void M1(int a, int b, R ress);
}
public class B implements A{ 
    public <B> void M1(int a, int b, B ress){
        D itsd = new D(int a, int b, ress);
    }
}
public abstract class C{ 
    int a, b;
    public C(int a, int b){
        this.a=a;
        this.b=b;
    }
}
public class D extends C{ 
    B c;
    public D(int a, int b, B c){
        super(a, b);
        this.c=c;
    }
}

Я получаю сообщение об ошибке с этим предложением: замените конструктор D (int a, int b, B c) на D (int a, int b, B c) idk почему, извините, если эта проблема кажется вам очевидной, но я новичок во всем этом типизированном методе

1 Ответ

0 голосов
/ 15 февраля 2019
public class B implements A{ 
    public <B> void M1(int a, int b, B ress){
        D itsd = new D(int a, int b, ress);
                                     ^^^^of any reference type.

Здесь параметр типа B скрывает (я думаю, что это правильный термин) класс B.ress может быть любого типа, указанного вызывающей стороной.

Возможно, вы имели в виду:

    public <R> void M1(int a, int b, R ress){

Позже ...

public class D extends C{ 
    B c;
    public D(int a, int b, B c){

Здесь B - это класс B.

Я настоятельно рекомендую избегать однобуквенных имен классов или иным образом дико игнорировать соглашения об именах Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...