MudGuard: Interface als Parameter einer abstrakten Methode

Beitrag lesen

Hi,

abstract class AbsProvider {

public abstract IGateway getGateway( IResult result )
}

class MyResult implements IResult {
  // [..]
}

class MyGateway implements IGateway {
  // [..]
}

class MyProvider extends AbsProvider {
  @Override
  public MyGateway getGateway( MyResult result ) {
  }
}

  
Definieren wir ein weiteres Result:  
  
class NotYourResult implements IResult {  
// [..]  
}  
  
  
~~~java
  
NotYourResult notYourResult = new NotYourResult;  
AbsProvider provider = new MyProvider();  
  
provider.getGateway(notYourResult);  

sollte dann ja funktionieren - das übergebene Objekt implementiert IResult, paßt also zur Methodendeklaration in AbsProvider.
Aber er paßt nicht zur Methodendeklaration in MyProvider, da das NotYourResult ja keine Ableitung von MyResult ist.

Um diese Situation zu verhindern, darf Deine MyProvider die Methode nicht mit MyResult deklarieren. Zumindest nicht als Override der abstrakten Methode ...

cu,
Andreas

--
Warum nennt sich Andreas hier MudGuard?
O o ostern ...
Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.