Genersiche Intefaces

Status
Nicht offen für weitere Antworten.

Paddel

Bekanntes Mitglied
Wenn ich das Interface
Code:
public interface ContainedI {
	public ContainerI getContainer();
	<T extends ContainerI> void setContainer(T con);
}
und das Interface
Code:
public interface GateI extends ArchitecturalI,ContainedI{
	
	
	
	public void connect(RoomI r1, RoomI r2);		//Verbinden 2 Räume
	public RoomI[] getConnected();				//Geben Interface zurück weil kann Atomarer Raum sein oder normaler Raum

}
habe
und in der KLasse Gate das Interface GateI einbinde würde ich gerne sagen das meine setContainer Methode nur noch:
Code:
	public void setContainer(LevelI c) {
		meinContainer = c;
		c.addElement(this);
		
	}
als SetContainer einbindet. Und LevelI ist von ContainerI abgeleitet. Wieso nimmt er das denn nicht an?
Durch <T extends ContainerI> sollte er doch alles akzeptieren was darunter liegt.
Gruss
 
B

Beni

Gast
...sollte er doch alles akzeptieren...
Der Satz stimmt, die Interpretation ist falsch. "setContainer" muss alle möglichen Implementationen von ContainerI annehmen. Folgender Code müsste also z.B. ausgeführt werden können:
Code:
public class Quarksuppe implements ContainerI{
}

...

ContainedI container = new Gate();
container.setContainer( new Quarksuppe() );

Auf folgende Art und Weise wirst du wohl glücklicher:
Code:
public interface ContainedI<T extends Container>{
  void setContainer( T con );
}
... und dann:
Code:
public interface GateI extends ContainedI<LevelI>{
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben