Generisch

Status
Nicht offen für weitere Antworten.

Schmittp

Mitglied
Hallo,

ich experementiere momentan ein wenig mit generischen Interfaces+Klassen und bin auf das folgende Problem gestoßen:

Bound mismatch: The type IPEndpoint is not a valid substitute for the bounded parameter <L extends IEndPoint<L>> of the type IClient<L,R>

Im Grunde hätte ich gerne ein generisches Interface "IEndpoint" was z.B. speziell für TCPIP ein "IPEndpoint" mit Internet Addresse und Port ist, bzw. eine InetSocketAddress ist. Ein IChannel bestimmt aus der lokalen Addresse und der Gegenstelle.
Die Klasse ATCPIPClient soll das Interface IChannel implementieren mit InetSocketAddress als IEndpoints.

Interfaces

Interfaces
Code:
public interface IEndPoint<T> {
	T GetEndPoint();

	void SetEndPoint(T t);
}
public interface IChannel<L extends IEndPoint<L>, R extends IEndPoint<R>> {
	R getRemoteEndpoint();

	L getLocalEndPoint();

}
public interface IClient<L extends IEndPoint<L>, R extends IEndPoint<R>>
		extends IChannel<L, R> {

}
Klassen
Code:
public class IPEndpoint implements IEndPoint<InetSocketAddress>
public class ATCPIPClient implements IClient<IPEndpoint, IPEndpoint>

Kann von euch zufällig jemand meinen Denkfehler entdecken :)?

Gruß
 
S

SlaterB

Gast
IClient erwartet als generischen Parameter eine Klasse vom Typ L, welche das Interface IEndPoint<L> implementiert

auf IPEndpoint trifft das offensichtlich nicht zu, denn IPEndpoint implementiert nicht das Interface IEndPoint<IPEndpoint>
 

Schmittp

Mitglied
Korrekt. Danke!

So muß das aussehen.

Code:
public interface IClient<L extends IEndPoint<?>, R extends IEndPoint<?>>
		extends IChannel<L, R> {

}
public interface IChannel<L extends IEndPoint<?>, R extends IEndPoint<?>> {
	R getRemoteEndpoint();

	L getLocalEndPoint();

}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben