En Java, l' private
modificateur d'accès considérer comme sûr, car il n'est pas visible à l'extérieur de la classe. Ensuite, le monde extérieur ne connais pas cette méthode.
Mais j'ai pensé réflexion Java peuvent utiliser pour briser cette règle. Considérons le cas suivant:
public class ProtectedPrivacy{
private String getInfo(){
return "confidential";
}
}
Désormais, à partir d'une autre classe, je vais obtenir des informations:
public class BreakPrivacy{
public static void main(String[] args) throws Exception {
ProtectedPrivacy protectedPrivacy = new ProtectedPrivacy();
Method method = protectedPrivacy.getClass().getDeclaredMethod("getInfo", null);
method.setAccessible(true);
Object result = method.invoke(protectedPrivacy);
System.out.println(result.toString());
}
}
En ce moment, j'ai juste pensé encore privés méthode sûre depuis de faire quelque chose comme ci-dessus, il nous faut connaître le nom de la méthode. Mais si la classe qui contient méthode privée écrite par quelqu'un d'autre nous n'avons pas de visibilité de ceux-ci.
Mais de mon point de devenir invalide depuis dessous de la ligne de code.
Method method[] = new ProtectedPrivacy().getClass().getDeclaredMethods();
Maintenant, c' method[]
contient toutes les choses à faire au-dessus de chose. Ma question est, est-il un moyen pour éviter ce genre de choses à faire à l'aide de Java réflexion?
Je suis en citer quelques-point de la Documentation Java pour préciser ma question.
Conseils sur le Choix d'un Niveau d'Accès:
Si d'autres programmeurs d'utiliser votre classe, vous voulez vous assurer que les erreurs d'une mauvaise utilisation ne peut pas se produire. Niveaux d'accès peuvent vous aider à le faire.L'utilisation de la plus restrictif niveau d'accès qui fait sens pour un particulier membre. Usage privé, sauf si vous avez une bonne raison de ne pas.