Generic? Enum - So lösbar?

Blakh

Bekanntes Mitglied
Hallo,
ich hoffe, dass der Thementitel passend war :oops:.

Also ich habe einen Decoder, welcher einen Zahlenwert (int) erhält und damit eine gegebene Enumeration dekodieren soll.

Es geht speziell umASN1 den Typ Enumerated.

Ich habe also eine Klasse erstellt ASN1Enumerated, welche ASN1Type extended. Zum dekodieren soll dem Konstruktor der Klasse die Enum-Klasse übergeben werden und anschließend die Enum-Konstante per Getter abfragbar sein.

Ich möchte nun wissen, ob dies schlecht umgesetzt wurde oder ob sowas in Ordnung ist. Bei Ersterem: Wie könnte man es besser machen?

Java:
public class ASN1Enumerated extends ASN1Type {
	
	protected  Class<?> enumeration;

	public <T extends Enum<T>> ASN1Enumerated(Class<T> enumeration) {
		super(new ASN1Tag(ASN1Tag.ENUMERATED,
				ASN1Tag.TagClass.UNIVERSAL), false);
		
		this.enumeration = enumeration;
	}
	
	public Enum<?> getDecodedEnum() {
		 return (Enum<?>) enumeration.getEnumConstants()[0];
	}
}

Das ist natürlich noch nicht der fertige Code, aber beispielhaft.

Danke :)
 

Marco13

Top Contributor
Daran sieht man jetzt nicht so viel. Vermutlich könnte (FALLS gewünscht) das T auch als
ASN1Enumerated<T extends Enum<T>> extends ...
dabeistehen, dann spart man sich innen die Raw Types
 

Landei

Top Contributor
Ich würde das oben als finsteren Hack ansehen, aber ohne mehr Kontext ist es schwer, Verbesserungsvorschläge zu machen. Wieso ist der genaue enum-Typ unbekannt? Wieso muss es unbedingt ein enum sein? Hast du Kontrolle über alle Klassen, oder sind schon welche vorgegeben?
 

Blakh

Bekanntes Mitglied
Der genaue Enum-Typ ist unbekannt, da es nur eine Bibliothek sein soll. Es gibt keine vorgegebenen Klassen.

Ich nehme an, dass ihr beiden wisst was ASN.1 ist oder? Der ASN.1 universal type Enumerated entspricht ja eigentlich in der Funktion dem von Java enum. Deswegen wollte ich dies so umsetzen.

Übertragen wird letztendlich dann auch nur ein Integer mit dem ordinal des Enum.

Alle Klassen welche ASN1Type extenden beinhalten ein Object "value", welches das entsprechende Java-Analog ist.

Man könnte auch sagen... ok ich halte einfach nur ein int-Wert als Value und der Nutzer der Lib muss sich selbst um die Validierung kümmern. Das finde ich aber irgendwie "schlampig" :oops:.
 
Zuletzt bearbeitet:

Blakh

Bekanntes Mitglied
Hallo marco13,
Wenn ich folgendes mache:

Java:
public Class<T> getEnumClass() {

			return ((Enum<T>) value).getDeclaringClass();

	}

Dann sagt mir eclipse, dass es ein unchecked Cast ist und bei Enum<?> jedoch nicht. Wenn ich mit instanceof prüfen möchte kommt folgendes:

Cannot perform instanceof check against parameterized type Enum<T>. Use the form Enum<?> instead since further generic type information will be erased at runtime

Lohnt es sich also doch nicht?
 

Marco13

Top Contributor
Die Methode stand bisher ja nicht dabei. Poste ggf. mal mehr (compilierbaren) Code (z.B. auch die Basisklasse und eine kleine main() mit der gewünschten Anwendung) aber sowas wie
Java:
class ASN1Enumerated<T extends Enum<T>>  {
    
    protected  Class<T> enumeration;
 
    public ASN1Enumerated(Class<T> enumeration) {
        this.enumeration = enumeration;
    }
    
    public T getDecodedEnum() {
         return enumeration.getEnumConstants()[0];
    }
    
    public Class<T> getEnumClass()
    {
        return enumeration;
    }
}

könnte ja passen... :bahnhof:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
O Comparable Generic Java Basics - Anfänger-Themen 24
F Type safety: A generic array of.. Fehler Java Basics - Anfänger-Themen 3
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
S Gibt es für die Klasse HashMap Generic Implementierungen? Java Basics - Anfänger-Themen 11
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
O Generic - Verstädnisproblem Java Basics - Anfänger-Themen 5
G instanceof in Generic Java Basics - Anfänger-Themen 7
N Datentypen LocalDate Generic Comparable Java Basics - Anfänger-Themen 2
P Variablen generic type variablen in object array Java Basics - Anfänger-Themen 1
M Generic Prüfungsvorbereitung Java Basics - Anfänger-Themen 4
G Generic und Listen Java Basics - Anfänger-Themen 8
J Generic - Autoboxing Java Basics - Anfänger-Themen 18
N Generic clonen => eclipse empfiehlt @SuppressWarnings("unchecked") Java Basics - Anfänger-Themen 2
S Generic Java Basics - Anfänger-Themen 9
P Java Generic Wildcard Java Basics - Anfänger-Themen 2
G Namen der Generic Klasse Java Basics - Anfänger-Themen 3
D generic extendet class Java Basics - Anfänger-Themen 10
M Generic's und Vererbung Java Basics - Anfänger-Themen 6
capgeti Datentypen Static generic return value von Subclass? Java Basics - Anfänger-Themen 9
C Generic Tutorial Java Basics - Anfänger-Themen 12
T Generic vom Generic: Zu sehr verschachtelt? Java Basics - Anfänger-Themen 6
V libssrckdtree-j Generic k-d tree Java library - weiss nicht wo des hin soll Java Basics - Anfänger-Themen 2
L Sinn hinter Generic? Java Basics - Anfänger-Themen 5
0 Was bedeutet dieser Generic-code? Java Basics - Anfänger-Themen 3
A Generic Problem Java Basics - Anfänger-Themen 16
S Generic Methode: syntax klemmt Java Basics - Anfänger-Themen 10
S Generic: Verständnisfrage Java Basics - Anfänger-Themen 2
S generic programmierung "ne:w T[X]" Java Basics - Anfänger-Themen 2
G generic interface problem Java Basics - Anfänger-Themen 12
Safado generic array creation Java Basics - Anfänger-Themen 2
G Frage zur Generic java ? Java Basics - Anfänger-Themen 9
G eine Frage zur Generic Java ? Java Basics - Anfänger-Themen 8
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
volcanos enum und switch (neu): falschen Wert mit IllegalArgumentException oder mit EnumConstantNotPresentException abfangen ? Java Basics - Anfänger-Themen 51
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
U Warum kann ich die Methode in der ENUM Klasse nicht aufrufen? Und warum geht die Switch nicht? Java Basics - Anfänger-Themen 8
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
S Java Enum Java Basics - Anfänger-Themen 2
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
V Enum Java Basics - Anfänger-Themen 1
C Farben als Enum Java Basics - Anfänger-Themen 3
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
I JAXB und Enum Java Basics - Anfänger-Themen 7
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
B Enum innerhalb einer Klasse / anderes Konzept Java Basics - Anfänger-Themen 8
N Enum Typen, was passiert intern mit ihnen? Java Basics - Anfänger-Themen 2
A enum Java Basics - Anfänger-Themen 6
O Enum Array Rekursiv abarbeiten Java Basics - Anfänger-Themen 44
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
N Java Enum converter Methode Java Basics - Anfänger-Themen 5
F Enum von Ländern Java Basics - Anfänger-Themen 8
J Klassen Enum als Informationsträger Java Basics - Anfänger-Themen 10
T Datentypen enum static Chaos (blutiger anfänger) Java Basics - Anfänger-Themen 5
R Enum ist das gleiche wie? Java Basics - Anfänger-Themen 15
P Klassen Richtige Anwendung einer Enum-Klasse Java Basics - Anfänger-Themen 11
E Datentypen Problem beim Speichern von enum. Java Basics - Anfänger-Themen 10
J Compiler-Fehler class interface or enum expected Java Basics - Anfänger-Themen 1
E Objektvergleich Enum Java Basics - Anfänger-Themen 7
kilopack15 Euromünzen in enum als Liste ausgeben Java Basics - Anfänger-Themen 11
N Enum als generischer Typ Java Basics - Anfänger-Themen 4
H Datentypen Fehler bei Verwendung von enum Java Basics - Anfänger-Themen 9
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
T error: class, interface, or enum expected Java Basics - Anfänger-Themen 5
S Menüauswahl per Enum Java Basics - Anfänger-Themen 12
F Enum via String definieren Java Basics - Anfänger-Themen 2
L Compiler-Fehler error: class, interface or enum expected Java Basics - Anfänger-Themen 2
M java.lang.Enum.valueOf(Unknown Source) Java Basics - Anfänger-Themen 2
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
P Fallunterscheidung mit Überprüfung (enum) Java Basics - Anfänger-Themen 11
H enum Type Java Basics - Anfänger-Themen 6
F Operatoren Enum aus Textdabei laden Java Basics - Anfänger-Themen 3
P enum: cannot be resolved to a type Java Basics - Anfänger-Themen 2
kaoZ Variablen Konstantensammlung vs. Enum Java Basics - Anfänger-Themen 9
H Enum außerhalb einer Klasse? Java Basics - Anfänger-Themen 2
K OOP Aufzählungstypen! enum Currency!!! Java Basics - Anfänger-Themen 5
F ENUM als Variable Java Basics - Anfänger-Themen 4
M Enum: Zugriff auf Konstanten Java Basics - Anfänger-Themen 7
W Enum Konstruktor Type Java Basics - Anfänger-Themen 2
A Erste Schritte ENUM - Werte zurückgeben Java Basics - Anfänger-Themen 5
D Enum als Parameter Java Basics - Anfänger-Themen 6
B Variablen Instanz von Enum zur Laufzeit erstellen und zuweisen Java Basics - Anfänger-Themen 2
B Datentypen Enum vererben/gruppieren? Java Basics - Anfänger-Themen 6
F Datentypen enum Java Basics - Anfänger-Themen 5
J Enum zählen Java Basics - Anfänger-Themen 8
D Einlesen eines Enum-Wertes per console Java Basics - Anfänger-Themen 3
K String mit ENUM vergleichen? Java Basics - Anfänger-Themen 6
N enum vergleiche Klammern? Java Basics - Anfänger-Themen 5
J public enum? in Java Java Basics - Anfänger-Themen 9
D Erste Schritte Enum - das unbekannte Wesen Java Basics - Anfänger-Themen 3
Y ENUM auslesen (Name des ENUM als Variable) Java Basics - Anfänger-Themen 4
P Compiler-Fehler "class, interface, or enum expected" Java Basics - Anfänger-Themen 5
K class, interface or enum expected Java Basics - Anfänger-Themen 14
pg1337 enum-Aufgabe Java Basics - Anfänger-Themen 5
N was sagt enum aus? Java Basics - Anfänger-Themen 3
S Methoden Enum Parameter in Methode Java Basics - Anfänger-Themen 7
G Datentypen enum Frage Java Basics - Anfänger-Themen 3
R Probleme mit Enum Java Basics - Anfänger-Themen 10
B Enum: Instanzen Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben