Ich habe hier eine ähnliche Frage mehrmals gesehen, aber es gibt einen großen Unterschied.
In den anderen Fragen soll der Rückgabetyp durch den Parameter bestimmt werden. Ich möchte / muss den Rückgabetyp anhand des analysierten Werts von byte[]
ermitteln. Nach dem, was ich gesammelt habe, könnte Folgendes funktionieren:
Ich möchte nur sicherstellen, dass dies eine Chance hat zu arbeiten, bevor ich etwas vermassele. Vielen Dank im Voraus.
Sie können es nicht tun. Java-Rückgabetypen müssen entweder ein fester Grundtyp sein oder eine Objektklasse. Ich bin mir ziemlich sicher, dass Sie nur einen Wrappertyp zurückgeben können mit Methoden zum Abrufen verschiedener möglicher Arten von Werten und einer internen Enumeration was sagt, welches ist gültig.
--- edit --- nach Daniets Korrektur!
%Vor%Sie erleiden immer noch einige Strafen für Boxen und Typprüfungen die zurückgegebenen Werte und natürlich, wenn Ihr Anruf nicht konsistent ist Was die Implementierungen von getParam tatsächlich tun, Sie erhalten eine Klasse Cast Ausnahme.
Dieser CAN ist erledigt. Der folgende Code funktioniert:
%Vor%Durch die Verwendung eines generischen Typs für den Rückgabetyp kann jede Java-Methode dynamisch alle Objekte oder primitiven Typen zurückgeben. Du kannst das Generische benennen, was immer du willst, und in diesem Fall habe ich es 'Any' genannt. Mit diesem Code vermeiden Sie, den Rückgabetyp beim Aufruf der Methode zu übergeben. Sie würden die Methode wie folgt verwenden:
%Vor%Das Beste, was Sie ohne diesen Trick tun können, ist das manuelle Umwandeln eines Objekts:
%Vor%Java dynamische Rückgabetypen können den Boilerplate-Code reduzieren. Hier ist ein schnelles Beispiel , das ich in Java 8 geschrieben habe.
Ich weiß nicht, worüber diese Leute reden. Sie verlieren die Typsicherheit, was ein Problem ist, aber Sie könnten dies leicht mit Generika erreichen ... etwas wie:
%Vor%oder
%Vor%Letzteres fördert die Möglichkeit eines Strategie-Patterns . Übergeben Sie die Bytes an die Strategie, lassen Sie sie ausführen und rufen Sie die Ausgabe ab. Sie hätten eine Byte-Strategie, eine Boolesche Strategie usw.
%Vor%dann
%Vor%Ihr Beispielcode ist jedoch ein schlechter Anwendungsfall und ich würde es nicht empfehlen. Deine Methode macht keinen Sinn.
Wenn Sie wirklich nur boolean
oder float
zurückgeben, dann ist Object
das Beste, was Sie tun können.
Wenn Sie variable Objekte zurückgeben, müssen Sie einen Rückgabetyp mit der kleinsten gemeinsamen Oberklasse auswählen. Primitive haben keine Superklasse, aber sie werden in Objektrepräsentationen eingereiht (wie Boolean
und Float
), die eine gemeinsame Oberklasse von Object
haben.
Tags und Links java dynamic return-type