So arbeite ich seit einigen Jahren in C# und arbeite jetzt in Java. In C# können Sie das Schlüsselwort intern verwenden, um eine Klasse/Methode vor der öffentlichen Ansicht zu verbergen, aber bestimmten Assemblys/Paketen Zugriff gewähren, wenn Sie dies ausdrücklich zulassen. Wenn ich mich in Java umsehe, sehe ich nichts, was direkt mit dem internen übereinstimmt.Gibt es eine Möglichkeit, package-private in Java zu verwenden, um anderen Paketen den Zugriff zu erlauben?
Ich habe über package-private erfahren. Dies hält es jedoch vollständig vor der Außenwelt verborgen. Gibt es in Java eine Möglichkeit, bestimmten anderen Paketen Zugriff auf internen Code zu gewähren, ohne ihn öffentlich zu machen?
Wenn Sie fragen, warum ich das tun würde Antworten sind in der Regel Unit/Integration Tests oder eine Notwendigkeit, bestimmte, vertrauenswürdige Pakete Zugriff auf Code haben, um es nicht zu duplizieren. Ich weiß, dass einige Leute denken, dass Sie keinen privaten/internen Code testen sollten. Ich weiß auch, dass es im Allgemeinen keine gute Softwareentwicklung ist, wenn man Zugang ins Innere gewährt. Ich bin nicht wirklich an Diskussionen über diese Themen interessiert, nur neugierig, ob Sie tun können, was ich tun möchte.
Danke.
Es gibt keinen Mechanismus in Java, um das zu tun, was Sie suchen. –
Sie können Ihre Klasse höchstens schützen. Es wird dann für andere Klassen in demselben Paket zugänglich sein. – Zahrec
Ergänzt den @ Zahrec-Kommentar: und es wird für andere Klassen außerhalb des Pakets zugänglich sein, wenn diese anderen Klassen ein Kind der Klasse mit dem geschützten Member sind. Dies ist wahrscheinlich die engste, die Sie erreichen können, was Sie wollen. –