Reduzieren Sie die Sichtbarkeit beim Implementieren der Schnittstelle in Java

8

Ich möchte die Klasse A so gestalten, dass sie die Schnittstelle C implementiert und die Sichtbarkeit einer Methode (in C deklariert) reduziert, um sie vor der Außenwelt zu schützen, eine der Methoden in der Klasse A als privat zu machen Klasse a). Ich muss dies aus Sicherheitsgründen tun, wie kann ich das tun, gibt es einen Workaround. Wir wissen, dass die Schnittstelle standardmäßig öffentliche Mitglieder hat. Aber es gibt keine Option für mich, kann mir jemand helfen. Danke im Voraus.

- Es gibt also keine Möglichkeit, eine Methode von der Schnittstelle implementieren zu lassen und sie als privat zu definieren. Und alle Klassen, die die Methode einer beliebigen Schnittstelle implementieren, haben immer öffentliche Methoden?

    
David Prun 05.07.2011, 19:44
quelle

4 Antworten

13

Nein, Sie können die Sichtbarkeit einer Methode in einer Schnittstelle nicht reduzieren. Was würden Sie erwarten, wenn jemand schreibt:

%Vor%

? Soweit der Compiler betrifft, alles mit einem Verweis auf eine Implementierung C hat das Recht, alle Methoden innerhalb es zu nennen -. Das ist, was Liskov das Substitutionsprinzip dreht sich alles um

Wenn Sie nicht die gesamte öffentliche Schnittstelle implementieren möchten, implementieren Sie sie nicht - oder geben Sie Ausnahmen aus, wenn Sie dies unbedingt tun müssen.

Es ist auch erwähnenswert, dass die im Quellcode zur Verfügung gestellte Barrierefreiheit selten eine gute Sicherheit Maßnahme ist. Wenn Ihre Klasse in einer VM ausgeführt wird, die ihrerseits ihre eigenen Berechtigungen bestimmen kann, kann jeder Mitglieder durch Reflektion sichtbar machen.

    
Jon Skeet 05.07.2011, 19:47
quelle
2

Sie können die Sichtbarkeit der Methode einer Schnittstelle in Java nicht reduzieren. Ist es akzeptabel, dass Sie die Methode implementieren, indem Sie java.lang.UnsupportedOperationException ? Werfen?

    
highlycaffeinated 05.07.2011 19:46
quelle
0

Sie können die Sichtbarkeit nicht reduzieren, weil Sie etwas in der Art von

schreiben könnten %Vor%     
Kal 05.07.2011 19:50
quelle
0

Dieser Ansatz hat bei mir funktioniert. Jede neue Funktion, die zu PrivateInterface hinzugefügt wurde, würde die PublicSampleClass

-Funktion unterbrechen %Vor%     
Vairavan 29.07.2017 17:36
quelle

Tags und Links