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?
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.
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?