********[QUOTE=cmrudolph]Hast du schon Ergebnisse?[/quote]
Nichts wirklich hübsches. Aber ich poste es trotzdem mal.
Zum grundsätzlichen Design mit den ganzen default-Methods habe ich heute einen Blogbeitrag gelesen, in dem auf diese Mail von Brian Goetz verlinkt war.
Nachdem ich mich ein wenig mehr mit default-Methods und den Auswirkungen bei deren intensiven Nutzung beschäftigt habe, bin ich für mich zu dem Ergebnis gekommen, dass es vielleicht sinnvoll wäre, einen klassischeren Ansatz zu verwenden und eine Kombination aus Interface + abstrakte Klasse zu entwerfen.
Wie das konkret aussieht ist natürlich auch stark davon abhängig, was deine Abstraktionsansätze bisher ergeben haben bzw. inwiefern wir gemeinsam eine schöne Abstraktion finden.
Welches konkrete Problem würden abstrakte Klassen anstatt default-Methoden lösen? Herrn Goetz’ Meinung in Ehren, aber wir haben jetzt nun einmal „poor man’s traits“ zur Verfügung.
Benefit: how would having this feature enable me to write code that is
better than what I can write today.
Cost: how would having this feature enable other people to write WORSE
code than they might write today.
Ich weiß, dass diese Sichtweise in der Java-Welt weit verbreitet ist, aber leider ist sie schlicht fehlgeleitet. Die Wahrheit ist: Man kann nichts „idiotensicher“ machen, und es ist ein Fehler, es überhaupt zu versuchen. Hat sich Herr Goetz einmal angeschaut, was gewisse Leute schon vorher mit Java veranstaltet haben? Als Beispiel: Wieviele falsche equals
-Implementierungen hast du schon gesehen? Ist den Leuten, die den equals
-Kontrakt nicht einhalten, irgendwie damit geholfen, wenn sie das in Interfaces nicht auch noch falsch machen können? Und ist von Leuten, die equals
implementieren können, zu erwarten, dass sie ein korrektes equals
in Interfaces auf einmal geistig überfordert?
Es ist eine Sache, Dinge ergonomisch und bei normalen Gebrauch sicher zu gestalten, aber es wird immer Missbrauch in der einen oder anderen Form geben. Andersherum betrachtet: Wie gut kann ein Pistole sein, die nicht einmal genügend Bums oder so viel Sicherheitsvorkehrungen hat, um sich damit in den Fuß zu schießen? Wenn ich damit in den Fuß meines Gegners schießen kann (was ja Sinn und Zweck eines solchen Geräts ist), wie soll dann verhindert werden, in den eigenen zu schießen? Wie nützlich kann ein entsprechend „sicheres“ Sprach-Feature sein?