Если вы говорите, в частности, о синглетах: это одна из причин, почему лучший способ их реализации - через enum:
public enum YourSingleton {
INSTANCE;
// methods go here
}
Если вы говорите об использовании setAccessible()
в целом: если код написан кем-то, кому вы не доверяете, чтобы не делать таких закулисных трюков, вам все равно не следует запускать его (или запускать в песочнице). ). Среди разработчиков публичную / приватную следует рассматривать как метаинформацию о том, как код предназначен для использования, а не как средство защиты.