Compile-Zeit: Test des Rückgabe-Typen

12/04/2015 - 15:28 von Robert Hartmann | Report spam
Hallo zusammen,

Mit Reflection ist es zur Laufzeit möglich den Rückgabe-Typ
einer Methode abzutesten.

Gibt es eine Möglichkeit einen àhnlichen Test zur Compile-Zeit
durchzuführen?

Der Test sollte so hart sein, dass es einen Compilerfehler gibt,
wenn z.B. der Typ der Methode statt eines primitiven Datentyps seine
Wrapper-Klasse ist.


Liefert eine Methode einen double statt eines int, ist der
CompileTime-Test sehr einfach:
Mann muss nur einer int-Variable den double-Wert zuweisen.

Wie allerdings kann man den Compiler zur Fehlermeldung bringen,
wenn die Methode einen int statt eines double oder float zurück liefert?

Gruß Robert
 

Lesen sie die antworten

#1 Patrick Roemer
12/04/2015 - 18:19 | Warnen spam
Responding to Robert Hartmann:
Mit Reflection ist es zur Laufzeit möglich den Rückgabe-Typ
einer Methode abzutesten.

Gibt es eine Möglichkeit einen àhnlichen Test zur Compile-Zeit
durchzuführen?

Der Test sollte so hart sein, dass es einen Compilerfehler gibt,
wenn z.B. der Typ der Methode statt eines primitiven Datentyps seine
Wrapper-Klasse ist.

Liefert eine Methode einen double statt eines int, ist der
CompileTime-Test sehr einfach:
Mann muss nur einer int-Variable den double-Wert zuweisen.

Wie allerdings kann man den Compiler zur Fehlermeldung bringen,
wenn die Methode einen int statt eines double oder float zurück liefert?



Auf Sprachebene eher nicht. Implicit numeric conversions und
auto-(un)boxing sind fester Bestandteil der Sprache.

Je nach IDE sollte man das konfigurieren koennen. In IntelliJ IDEA gibt
es inspections fuer "implicit numeric conversion" und "Auto-(un)boxing";
in Eclipse sehe ich auf Anhieb nur einen severity switch fuer "boxing
and unboxing conversions". Vielleicht kann man das in Tools, die man in
den Build einbinden kann (FindBugs, PMD, Checkstyle), auch
konfigurieren: FindBugs, PMD, Checkstyle?

Aber was genau ist denn das Problem/der Anwendungsfall? Klar, mit
Auto-(Un-)Boxing kann man gewisse Arten von bloeden Bugs bauen, aber das
kann man mit allen moeglichen anderen Sprachfeatures auch, ohne dass man
die deswegen gleich komplett loswerden will. Und implicit numeric
conversions sind sicher nicht die reine Lehre, aber welche praktischen
Probleme bereiten die denn?

Viele Gruesse,
Patrick

Ähnliche fragen