Почему бы избежать постоянного сворачивания в Java? Когда?
Я видел некоторые коды в slf4j, как показано ниже. Я не знаю, почему избегать постоянного складывания здесь. Нужно ли это делать? или просто лучшая практика. какая польза от этого?
Благодарю.
/**
* Declare the version of the SLF4J API this implementation is compiled against.
* The value of this field is usually modified with each release.
*/
// to avoid constant folding by the compiler, this field must *not* be final
public static String REQUESTED_API_VERSION = "1.6"; // !final**
1 ответ
В конкретном случае, когда вы выпускаете библиотеку, у вас часто нет контроля над окончательной версией библиотеки журналов, которая в конце концов будет связана в конце. Например, вы используете версию 1.6, а приложение, которое использует вашу библиотеку, может использовать 1.6.1, чтобы получить исправление. Поскольку это только точечный выпуск, API должен быть совместимым, но если ваша библиотека проверяет версию SLF4J, она должна показывать 1.6.1, а не 1.6.
Если константа встроена, вы увидите 1.6 (поскольку она скопирована в ваш файл класса), даже если библиотека обновлена после факта.