private методи в java
Зазвичай вважається, що з точки зору безпеки java просто чудова як мова програмування. В деяких випадках я замислююсь, а чи це так в дійсності.
Спочатку я побачив спосіб роботи з класами java, використовуючи Firefox, що дозволяє відлагоджувати аплети користуючись браузером. Тоді серед коментарів був такий: “И пусть кто-то скажет, что зря придумали private методы”. Однак сьогодні в майже сусідньому блозі знайшов ось такий приклад:
import java.lang.reflect.*;
class A {
private void f() {
System.out.println(”Running A.f()”);
}
}
public class Main {
public static void main(String[] args) throws Exception {
Class a = new A().getClass();
Method m = a.getDeclaredMethod(”f”, null);
m.setAccessible(true);
m.invoke(new A(), null);
}
}
Здається, це повноцінна можливість втручання в роботу тих самих аплетів, можливість використовувати те, щоя зоборонено.
Джерело прикладу
Все залежить від настройок безпеки у JVM…