3 Stimmen

Wie bringe ich den Java-Compiler dazu, mir mitzuteilen, welchen Typ er folgert?

Wenn ich eine generische Java-Funktion wie:

<T> T choose(T a, T b) { }

und ich rufe es von irgendwoher auf, wie kann ich herausfinden, welcher Typ für T abgeleitet wird?

Bearbeiten: Die Typinferenz erfolgt zur Kompilierzeit. Also, was ich frage ist, wie bekomme ich den Compiler, um mir einige Informationen (der abgeleitete Typ) hat es während der Kompilierung, aber das macht es nicht in die .class-Datei?

Ich könnte versuchen, das Ergebnis Variablen verschiedener Typen zuzuweisen, z. B.:

// Compiles, so inferred type is at least Throwable.
Throwable foo = choose(new EOFException(), new FileNotFoundException());

// If this compiles, T must be Map or something that implements Map.
Map foo = choose(new HashMap(), new TreeMap());

Aber das ist eher indirekt. Ich möchte, dass der Compiler mir sagt, welchen Typ er für T herleitet, anstatt dass ich 20 Fragen stellen muss.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X