Ich habe ein Problem beim Sperren eines generischen Typs. Unten ist eine Schnittstelle, die von zwei Enum-Klassen implementiert wird. Die Klasse Cover
verwendet einen generischen Typ, der in einer Klasse CarRequest
angegeben ist. Ich möchte in der Lage sein, nur die Enums zu verwenden, die die CoverType
Schnittstelle implementieren.So sperren Sie einen generischen Typ, der eine Enum ist
Zuerst dachte ich, eine abstrakte Klasse zu verwenden, die durch die Aufzählungen und Nutzung erweitert:
public class Cover<T extends AbstractCoverType>
Aber das funktioniert nicht, weil ich nicht eine ENUM-Klasse erweitern kann. Als ich von der Schnittstellenlösung gedacht, die im Folgenden dargestellt wird, aber in diesem Fall kann ich nicht tun:
public class Cover<T implements CoverType>
Wie kann ich die Cover
Klasse nur als Gattungstyp die ersten beiden Aufzählungen zu akzeptieren sperren und nicht die dritte ?
Schnittstelle:
public interface CoverType {}
Erste Enum:
public enum FireCoverType implements CoverType {
SANITATION, RENTAL, GLASS
}
Zweite Enum:
public enum CarCoverType implements CoverType {
ACCESSORIES, LEGAL_ASSISTANCE
}
Dritte Enum:
public enum PaymentTerm {
MONTH, QUARTER, YEAR
}
Titel Klasse:
public class Cover<T> {
private T coverType;
// getter and setter
}
CarRequest:
public class CarRequest {
private Cover<CarCoverType> cover;
// getter and setter
}
Manchmal kann die Antwort sehr einfach sein. Danke, dass du mich gerettet hast! –
@MartijnBurger in der Tat :) Gern geschehen! – Mena