Частные методы действительно безопасны?

В Javaprivate Модификатор доступа считают безопасным, поскольку он не виден за пределами класса. Тогда внешний мир неЯ тоже не знаю об этом методе.

Но я думал, что отражение Java можно использовать, чтобы нарушить это правило. Рассмотрим следующий случай:

public class ProtectedPrivacy{

  private String getInfo(){
     return "confidential"; 
  }

}  

Теперь из другого класса я собираюсь получить информацию:

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());
   }
} 

В этот момент я просто думал, что приватный метод все еще безопасен, так как чтобы сделать что-то подобное, мы должны знать имя метода. Но если класс, который содержит приватный метод, написанный кем-то другим, мы нене иметь видимости тех.

Но моя точка становится недействительной, так как ниже строки кода.

Method method[] = new ProtectedPrivacy().getClass().getDeclaredMethods();

Теперь этоmethod[] содержит все вещи, которые нужно сделать выше вещи. У меня вопрос, есть ли способ избежать такого рода вещей, используя отражение Java?

Я цитирую какой-то пункт изДокументация Java уточнить мой вопрос.

Советы по выбору уровня доступа:

Если другие программисты используют ваш класс, вы хотите, чтобы ошибки от неправильного использования не возникали. Уровни доступа могут помочь вам в этом. Используйте наиболее ограниченный уровень доступа, который имеет смысл для конкретного участника. Используйте личное, если у вас нет веских причин не делать этого.

Ответы на вопрос(7)

Ваш ответ на вопрос