9

以下に示すように、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**
4

1 に答える 1

6

ライブラリをリリースする特定のケースでは、最終的に最後にリンクされるロギング ライブラリの最終バージョンを制御できないことがよくあります。たとえば、バージョン 1.6 を使用していて、ライブラリを使用しているアプリケーションが 1.6.1 を使用してバグ修正を取得する場合があります。これはポイント リリースにすぎないため、API は互換性があるはずですが、ライブラリが SLF4J バージョンを検査すると、1.6 ではなく 1.6.1 と表示されるはずです。

定数がインライン化されている場合、後でライブラリがアップグレードされたとしても、1.6 が表示されます (クラス ファイルにコピーされるため)。

于 2011-01-15T18:03:11.677 に答える