Java コンパイラがコンパイル時に他のクラスから定数フィールド値を取得することはよく知られています。結果のクラス ファイルには、そのような定数の (任意の型の) 定数プール エントリは含まれません。
Q: コンパイラにそれを行うように指示できますか? (Oracle JDK 7 がいいでしょう)
out.println(some.other.class.FOO)
例として、 FOO (たとえばpublic static final int FOO = 1234
) を読み取り、それを出力するコードを考えてみ
ましょう。問題なく参照を見つけることができますprintln
が、定数は匿名に変わりsipush 1234
ます。
クラス レベルの依存関係の分析では、ここで透明性を確保できれば素晴らしいことです。変更された値を依存コードに何らかの形で表示するように求めているわけではないことに注意してください(それに関する他のSOの質問の負荷を参照してください)...
javac への Java Compiler API プラグインについて考えていますが、それは少し大げさなように聞こえますか? 何か案は?