2012-03-20 3 views
1
interface i1{ 
    int test(); 
} 

interface i2{ 
    String test(); 
} 

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

Если тип возвращаемого из реализованного метода является INT, ошибка говорит Возвращаемый тип несовместим с i2.test() Если тип возвращаемого из реализованного метода является Строка, ошибка говорит Возвращаемый тип несовместим с i1.test()Типы возврата и множественное наследование?

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

Любая Помощь провер eciable.

+0

См http://stackoverflow.com/questions/2598009/method -name-collision-in-interface-implementation-java – nos

ответ

8

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

Ваш выбор:

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

Как я должен выполнять эти два интерфейса в моем классе Test

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

+0

невозможно реализовать в одном классе любым способом? –

+0

@Chandra Sekhar: нет. –

0

Это не возможно решить эту проблему, только заполнив некоторый подходящий тип возврата.

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

0

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

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(); 
    } 



} 



} 
Смежные вопросы