зачем избегать постоянного сворачивания в Java?Когда? - PullRequest
9 голосов
/ 15 января 2011

Я видел некоторые коды в 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 Ответ

6 голосов
/ 15 января 2011

В конкретном случае, когда вы выпускаете библиотеку, у вас часто нет контроля над окончательной версией библиотеки журналов, которая в конце концов будет связана в конце. Например, вы используете версию 1.6, а приложение, которое использует вашу библиотеку, может использовать 1.6.1, чтобы получить исправление. Поскольку это только точечный выпуск, API должен быть совместимым, но если ваша библиотека проверяет версию SLF4J, она должна показывать 1.6.1, а не 1.6.

Если константа встроена, вы увидите 1.6 (поскольку она скопирована в ваш файл класса), даже если библиотека будет обновлена ​​после факта.

...