Пример из реальной жизни:
public class Control {
public static final long EXPIRED_ON = 1386082988202l;
public static final boolean isExpired() {
return (System.currentTimeMillis() > EXPIRED_ON);
}
}
Затем в других классах я могу выйти, если срок действия кода истек. Если я ссылаюсь на переменную EXPIRED_ON из другого класса, эта константа является встроенной в байт-код, что очень затрудняет отслеживание всех мест в коде, который проверяет дату истечения срока действия. Однако, если другие классы вызывают метод isExpired (), вызывается фактический метод, то есть хакер может заменить метод isExpired другим, который всегда возвращает false.
Я согласен, что было бы очень неплохо заставить компилятор встроить статический метод final во все классы, которые ссылаются на него. В этом случае вам даже не нужно включать класс Control, так как он не понадобится во время выполнения.
Из моих исследований это сделать невозможно. Возможно, некоторые инструменты Obfuscator могут сделать это, или вы можете изменить процесс сборки, чтобы редактировать исходные коды перед компиляцией.
Что касается подтверждения того, что метод из класса элемента управления помещается встроенным в другой класс во время компиляции, попробуйте запустить другой класс без класса Control в пути к классам.