Gibt es für den Default Modifier “package-private” eigentlich auch eine ausgeschriebene Variante?
Wenn dort nichts steht hab ich immer eher das Gefühl der richtige Modifier wurde einfach vergessen und es sieht merkwürdig aus.
Verwendet ja auch keine Sau. Der default modifier sollte eigentlich private sein.
Man könnte beim ersten Gedanken auf die Idee kommen diesen default zu nennen, allerdings ist dieses Schlüsselwort bereits für das switch-Statement vorgesehen.
Deshalb würde ich mal sagen: Nein.
Andere Sprachen machen alles ohne Modifier private.
Doch, das wird häufig verwendet. Man muss nur genau hinsehen, denn als Anwender einer Bibliothek sieht man diese Klassen ja nicht direkt.
Wenn man gegen Interfaces implementiert, bietet es sich an, die implementierenden Klassen package-private zu machen. Im selben Package wie die Implementierung liegt dann ein Builder oder eine Factory, die dann die konkrete Instanz zurückgibt.
Das ist nur ein Anwendungsbeispiel.
Naja, default gibt es ja jetzt auch im Zusammenhang mit implementierungen in Interfaces also ist es kein Grund, dass man default nicht nehmen könnte, weil es schon woanders ein Schlüsselwort ist. Im Gegenteil, dadurch dass es eben schon ein Schlüsselwort ist, wäre es leichter, es zu benutzen, da so keine bestehenden Implementierungen „zerstört“ werden.
‚Modifier‘ wäre vielleit nicht mehr das passende Wort, wenn immer etwas da stände
es ist ja etwa auch ‚static‘ ein Modifier, niemand will immer alternativ auch ‚non-static‘ schreiben
ein Punkt hierzu ist auch, dass in Interface der unsichtbare Sichtbarkeitsstandard public ist,
wobei hier natürlich auch gar nicht zu modifizieren
‚default‘ als Name wäre ziemlich aussagelos, hier ist doch etwas recht konkretes gemeint,
‚package‘ geht ja genauso, kurz, exakt, ebenfalls bereits Schlüsselwort
die Wahl des Standards in normalen Klassen für Methoden und Attribute hätte vielleicht eine andere sein können
andererseits ist das Problem ja gerade, dass es unschön aussieht wenn nichts da steht, insofern die aktuelle Situation schon recht gut:
die meisten schreiben public/ private, der nicht-benannte Standardwert spielt kaum eine Rolle,
‚package‘ klingt durchaus auch recht nützlich, aber mit packages und gegenseitigen Zugriff darin arbeiten eher wenige,
die haben längst keine Verständnis-Sorgen mehr zu diesem Punkt
mit private als Standard wäre aber die Sicht vielleicht eine andere,
mehr an Methoden ohne Sicherbarkeits-Modifier gewohnt
Manchesmal ist es auch praktisch, eigentlich private Methoden einer Klasse Paketsichtbar zu machen, wenn man sie einzeln testen will (bzw. dies sinnvoll tun kann).
Eigentlich wäre es vorzuziehen, wenn die nicht-modifizierte Variante private wäre, genau wie finale Variablen. Was dann allerdings normale for-Schleifen etwas hässlicher machen würde.