Gibt es in Java so etwas wie eine interne Klasse?
In C# können Sie markieren eine Klasse als internal
so dass es nur zugänglich von innerhalb des gleichen package. Gibt es etwas ähnliches in Java?
InformationsquelleAutor der Frage Svish | 2011-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie erstellen package-private-Klassen durch weglassen der Sicherheits-modifier (public, private), die von der Klasse in der Erklärung.
InformationsquelleAutor der Antwort Bryan Kyle
Fallenlassen der zugriffsmodifizierer ist ähnlich wie intern in C#.
C#
Java
Quelle: http://www.javacamp.org/javavscsharp/internal.html
InformationsquelleAutor der Antwort Steven Jeuris
diese Frage hat eine akzeptierte Antwort vor, aber ich denke, die Antwort ist nicht ganz klar, für jemanden, der neu in java aus .Net.
Tut java haben einige genaue Entsprechung für interne Modifizierer in C# ? die kurze Antwort ist NEIN (aber man kann es erreichen, wie einige, und ich sage)!!
internal in C# ist eigentlich ein "Montage-private" - modifier. was ist eine assembly ?
Montage ist ein Produkt des Projekts (DLL oder EXE-Datei in C# - äquivalent in java kann man eine JAR-Datei)
gibt es keine genaue Entsprechung für die interne in java. und was wurde beantwortet von Bryan Kyle und akzeptiert ist eigentlich "package-private" (Pakete, die in java-sind gleichwertig für namespaces in C#), aber einige, wie das, was bereits beantwortet wurde, ist der nächste Weg, um das gleiche Ergebnis.
ABER wie bekommt man einen komplett gleichen Ergebnis wie die internen ? cant java haben eine Lösung für dieses ? die Antwort ist JA.
es nicht haben. aber nicht mit einem Modifikator.
eigentlich der beste Weg, dies zu tun, ist ein Geheimnis in der Verpackung. die best-practice-Verpackung ist, Verpacken Sie Ihre Klassen, indem Sie Ihre Beziehung nicht von Ihrer Art sind.
viele von uns nutzen-Pakete, die mit "Modellen" oder "Moderatoren" und alle unsere Modelle oder Moderatoren. während das ist so verdammt falsch. Pakete werden sollte, wie "Buch" mit "BookModel.java", "BookPresenter.java" , .....
diese Weise können Sie Paket-private-durch das weglassen der modifier und haben kein problem, weil Sie können Sie in jeder Klasse, die Ihre Paket-private-Klasse, weil Sie eine gute Praxis der Verpackung.
InformationsquelleAutor der Antwort Amir Ziarati
Ja. Es nennt sich package-private, Sie definieren die Klasse ohne irgendwelche Modifikatoren:
package com.blah;
class Foo{ }
InformationsquelleAutor der Antwort Steven Fines
Ich bin nicht vertraut mit C#, aber in Java ist der Standard-Schutz ist, dass etwas ist nur zugänglich im Paket:
public=für jeden zugänglich
privat=nur innerhalb der aktuellen Klasse
protected=zugänglich im Paket oder in jede Klasse erbt von der aktuellen Klasse
default=zugänglich im Paket
Ich habe immer gedacht, es sollte sein ein Weg zu sagen "kann von jeder Klasse, die erbt von der aktuellen Klasse, aber nicht von überall sonst, dieses Paket oder andere". Aber gibt es nicht.
InformationsquelleAutor der Antwort Jay
Können Sie ein Klasse Paket lokal. Dies ist der Standardbereich für eine Klasse. also, wo Sie keinen Zugang Modifikatoren.
Wenn Sie wirklich wollen, setzen irgendwann Sie können eine annotation z.B. @package_local, kann ich dies an Orten, wo ich speicifc wollen, dass es sein Paket lokale und nicht nur lassen Sie es unspecificed.
InformationsquelleAutor der Antwort Peter Lawrey
Ja, die default (package private) Zugriff Ebene. Lassen Sie einfach alle zugriffsmodifizierer auf Ihre Klassendefinition und Sie bekommen, was Sie wollen.
InformationsquelleAutor der Antwort jarnbjo