Рассмотрим приведенный ниже пример.Использование интерфейса в качестве типа параметра в java
Почему это так, что я не разрешено использовать BImpl в качестве типа параметра метода doSomething3? Когда я говорю «не разрешено», я имею в виду, что Eclipse жалуется, что doSomething3-метод из интерфейса AInf не реализован.
interface AInf
{
AInf doSomething();
BInf doSomething2();
void doSomething3(BInf param);
}
interface BInf
{
}
class AImpl implements AInf
{
@Override
public AImpl doSomething() {
// TODO Auto-generated method stub
return null;
}
@Override
public BImpl doSomething2() {
// TODO Auto-generated method stub
return null;
}
@Override
public void doSomething3(BImpl param) // This method is not overriding the doSomething3(BInf param) from the AInf
{
// TODO Auto-generated method stub
}
}
class BImpl implements BInf
{
}
Хорошо, я вижу вашу мысль. Итак, какие у меня варианты и какова наилучшая практика сужения принятых типов в качестве типов параметров в классе реализации AImpl для метода doSomething3()? Создание отдельного интерфейса только для AImpl? –
@IsmarSlomic Почему вы хотите сузить его? – biziclop
Если вам нужно это сделать, вам, вероятно, понадобится общий интерфейс. –