2016-05-04 9 views
-2

Ich habe eine bestimmte Klasse aus dem Paket: org.jdesktop.swingx.JXErrorPane.Wie nur eine Klasse auf eine bestimmte API-Klasse zugreifen kann

Ich habe eine Factory-Klasse verwendet, um die Methoden in der JXErrorPane-Klasse aufzurufen, während ich anderen Klassen verbiete, JXErrorPane aufzurufen. Jede andere Klasse, die die JXErrorPane-Klasse verwenden muss, muss die Factory-Klasse aufrufen.

Ich habe auf dieser Website gefunden: http://www.eclipsezone.com/eclipse/forums/t53736.html auf, wie man den Zugang zu einer bestimmten Klasse oder einem Paket verbietet, aber es würde meine Fabrikklasse auch verbieten.

Gibt es eine Möglichkeit, der Factory-Klasse nur zu erlauben, die API-Klasse zu besuchen, aber andere Klassen zu verbieten?

+0

haben möchten Haben Sie Kontrolle über 'JXErrorPane'? Wenn dies der Fall ist, können Sie es als "package-private" definieren und Ihre "Factory" im selben Paket mit einem "public" -Modifizierer platzieren. Dann können nur die Klassen im selben Paket (z. B. Ihre Fabrik) auf 'JXErrorPane' zugreifen. – Jaims

Antwort

0

Ihre Frage ist ein bisschen seltsam, aber hier ist mein zwei Cent wert: Access-Modifikatoren sollten Ihre Freunde sein. Der Standardzugriffsmodifikator auf Klassenebene ist sinnvoll, wenn Sie nicht möchten, dass die Klasse außerhalb Ihres Pakets sichtbar ist. Ein Standardkonstruktor würde die Konstruktion Ihres Objekts so einschränken, dass es nur innerhalb des Pakets sichtbar ist. Ich gehe davon aus, dass dies die Anwendung der Fabrik ist, auf die Sie sich in Ihrer Frage beziehen. Fabriken dienen zum Erstellen von Objekten.

Wie zur Einschränkung der Aufrufe an die Methoden zu Ihrer Fabrik, das ist nicht eine korrekte Anwendung einer Factory. Vielleicht suchen Sie nach dem Proxy- oder Delegate-Muster. Selbst in diesem Fall sind Zugriffsmodifizierer dein Freund. Ich bin nicht sicher, warum Sie solche Komplexität obwohl

Verwandte Themen