Типы возврата и множественное наследование? - PullRequest
1 голос
/ 20 марта 2012
interface i1{
    int test();
}

interface i2{
    String test();
}

class Test implements i1,i2{
    <Return type> test(){
         //code here
    }
}

Если тип возвращаемого значения реализованного метода int , ошибка говорит Тип возвращаемого значения несовместим с i2.test () Если тип возвращаемого значения реализованного метода равен String, ошибка говорит Тип возвращаемого значения несовместим с i1.test ()

Как мне реализовать эти два интерфейса в моем классе Тест

Любая помощь заметна.

Ответы [ 4 ]

8 голосов
/ 20 марта 2012

Вы не можете.Они несовместимы.В этом случае рассматриваются только имя метода и аргументы.

Вы можете выбрать:

  1. Изменить имя одного из методов
  2. Сделать списки аргументов различнымисодержат различные типы
1 голос
/ 20 марта 2012

Как мне реализовать эти два интерфейса в моем классе Test

Либо реализовать их в двух разных классах, либо переименовать (или изменить сигнатуру параметра) один из методов интерфейса.

0 голосов
/ 20 марта 2012

Это никогда не сработает, вам нужно найти альтернативу. Переименуйте методы, или вы можете предоставить реализацию внутреннего класса следующим образом:

class Test {


 static i1 i=new i1() {

    @Override
    public int test() {

        return 0;
    }
};

        static i2 i22=new i2() {

    @Override
    public String test() {

        return "String";
    }
};


public static void main(String...strings ){

    if(someObject instanceof String){

        i.test();



    } else {

        i22.test();
    }



}



}
0 голосов
/ 20 марта 2012

Невозможно решить эту проблему, только заполнив соответствующий тип возврата.

Вам нужно будет найти альтернативное решение; например, переименуйте метод test в одном из интерфейсов.

...