Hallo,
ich habe Erfahrung mit C# und dort gibt es den praktischen modifier internal für Klassen. Wenn eine Klasse diesen Modifier besitzt, so ist sie innerhalb des Assemblies (ein Assembly entspricht einer JAR oder einer DLL) public aber nicht von aussen sichtbar (also Code, welcher dieses Assembly importiert kann diese Klasse nicht sehen). Bei Java gibt es das ja nicht, hier gibts nur entweder alle oder nur ein einzelnes package.
Wie kann man damit aber nun schöne Bibliotheken erstellen? Angenommen ich schreibe Code, welcher später von anderen Java-Projekten genutzt werden soll. Diese sollen aber nur die öffentlichen Klassen (oder Interfaces) sehen, was ja gutes Design ist. Allerdings möchte ich meinen Code ja schon in verschiedenen Packages struktieren und nicht alles in ein Package quetschen, da das schlechtes Design ist. In C# ist dies kein Problem aber in Java scheinen diese beiden Anforderungen sich zu beissen. Wie ist hier die Standard-Vorgehensweise?
Beispiel:
package foo: AClass, SomeFacade
package bar BClass
SomeFacade soll jetzt nach aussen sichtbar sein und ist somit public (das ist ja kein Problem). AClass und BClass sollen jedoch nicht sichtbar sein, aber AClass soll BClass kennen. In Java nicht möglich.
Vielen Dan
ich habe Erfahrung mit C# und dort gibt es den praktischen modifier internal für Klassen. Wenn eine Klasse diesen Modifier besitzt, so ist sie innerhalb des Assemblies (ein Assembly entspricht einer JAR oder einer DLL) public aber nicht von aussen sichtbar (also Code, welcher dieses Assembly importiert kann diese Klasse nicht sehen). Bei Java gibt es das ja nicht, hier gibts nur entweder alle oder nur ein einzelnes package.
Wie kann man damit aber nun schöne Bibliotheken erstellen? Angenommen ich schreibe Code, welcher später von anderen Java-Projekten genutzt werden soll. Diese sollen aber nur die öffentlichen Klassen (oder Interfaces) sehen, was ja gutes Design ist. Allerdings möchte ich meinen Code ja schon in verschiedenen Packages struktieren und nicht alles in ein Package quetschen, da das schlechtes Design ist. In C# ist dies kein Problem aber in Java scheinen diese beiden Anforderungen sich zu beissen. Wie ist hier die Standard-Vorgehensweise?
Beispiel:
package foo: AClass, SomeFacade
package bar BClass
SomeFacade soll jetzt nach aussen sichtbar sein und ist somit public (das ist ja kein Problem). AClass und BClass sollen jedoch nicht sichtbar sein, aber AClass soll BClass kennen. In Java nicht möglich.
Vielen Dan