Ich hatte eine Methode (nennen Sie es foo) wie folgt: public void foo (String parm) Ich weiß, habe Gelegenheit, manchmal eine Ganzzahl, die ich in eine Zeichenfolge konvertieren (nicht nur "" + x, es ist komplizierter als das und Sie können den String-Wert nicht nur durch den Blick auf den int-Wert ermitteln. Der int-Wert wird als Index verwendet.Abfangen eines Fehlers bei der Kompilierung statt Laufzeit in Java
Also jetzt mache ich das:
public void foo(Object obj) {
if (obj instanceof String) {
...
} else if (obj instanceof Integer) {
...
} else // some sort of error
}
die, wenn Sie mögen tun etwas keinen Fehler bei der Kompilierung fangen:
foo(new Date());
Gibt es eine Möglichkeit, dass ich das zur Kompilierzeit abfangen kann (außer zwei getrennte Methoden zu machen public void foo(Integer x)
und public void foo (String str)
?
überladen Sie Ihre Methode. Eine, die String und andere verwendet, die Integer benötigt. – akaHuman
"* Anders als zwei getrennte Methoden *" Was ist das Problem damit? Überladen ist genau so, wie Sie Typinkonsistenzen bei der Kompilierung behandeln. Auf was genau hoffen Sie? Im Allgemeinen ist es ein schlechtes Zeichen, wenn Sie eine Methode haben, die verschiedene Arten von Eingaben akzeptiert und verschiedene Dinge mit ihnen macht. Definieren Sie stattdessen zwei separate Methoden. – dimo414
Obwohl Sie dies in C++ * erreichen könnten (diese Art von Legitimierung dieser Frage IMHO) können Sie es nicht in Java tun. Jede Lösung wird auf genau zwei überladene Funktionen herunterkochen. – Bathsheba