Ein anderer Aspekt:
Java ist eine statische Sprache mit sehr strengen Merkmalen. Dies bedeutet, dass viele Dinge, die in anderen Sprachen ziemlich offen oder dynamisch wären (c / f Ruby, Lisp usw.), streng bestimmt sind.
Dies ist eine allgemeine Entwurfsentscheidung. Das "Warum" ist schwer zu beantworten (gut, weil die Designer der Sprache dachten, es wäre gut!). Das "Wofür" ist ziemlich klar: Es lässt den Compiler viele Fehler erkennen, was im Allgemeinen für jede Sprache ein ziemlich gutes Feature ist. Zweitens ist es vergleichsweise einfach, über die Sprache nachzudenken. Beispielsweise ist es relativ einfach, formale Korrektheit zu erstellen, die sich in (Teilmengen von) der Java-Sprache nachweist. Zum Vergleich: In einer dynamischen Sprache wie Ruby et al.
Dieses Denken durchdringt die Sprache, zum Beispiel die erzwungene Deklaration möglicher Ausnahmen, die eine Methode auslösen kann, die getrennte Art von interface
vs. class
, um mehrdeutige Mehrfachvererbung zu vermeiden, und so weiter. Für das, was es ist (eine statische, zwingende OOP-Sprache in der realen Welt mit starkem Fokus auf der Fehlerbehandlung zur Kompilierungszeit), sind diese Dinge tatsächlich recht elegant und mächtig. Sie kommen theoretischen (naturwissenschaftlichen) Sprachen näher, die gezielt entwickelt wurden, um einige dieser Themen zu untersuchen, als jede andere reale Sprache zuvor (zu diesem Zeitpunkt wohlgemerkt).
Damit. Ein strikter void
Typ ist eine eindeutige Meldung: Diese Methode gibt nichts zurück, Punkt. Es ist was es ist. Das Ersetzen durch die Erzwingung, immer etwas zurückzugeben, würde entweder zu einem viel dynamischeren Verhalten führen (wie in Ruby, wo jedes Def immer einen expliziten oder impliziten Rückgabewert hat), was für die Beweisbarkeit und Argumentation schlecht wäre; oder zu massiv aufblähen, indem Sie hier einen anderen Mechanismus verwenden.
(Und NB, Ruby (zum Beispiel) handhabt dies anders und seine Lösung ist immer noch genauso akzeptabel wie die von Java, da es eine völlig andere Philosophie hat. Zum Beispiel wirft es Beweisbarkeit und Vernünftigkeit komplett aus dem Fenster, während es einen großen Fokus darauf legt extrem hohe Ausdruckskraft der Sprache.)