6
最終的な定義は不適切ですか?
まず、パズル:次のコードは何を出力しますか? public class RecursiveStatic { public static void main(String[] args) { System.out.println(scale(5)); } private static final long X = scale(10); private static long scale(long value) { return X * value; } } 回答: 0 下のネタバレ。 Xscale(long)で印刷してを再定義するX = scale(10) + 3と、印刷はにX = 0なりX = 3ます。つまり、Xは一時的にに設定され0、後でに設定され3ます。これは違反ですfinal! static修飾子は、final修飾子と組み合わせて、定数の定義にも使用されます。最後の修飾子は、このフィールドの値を変更できないことを示しています。 ソース:https : //docs.oracle.com/javase/tutorial/java/javaOO/classvars.html [強調を追加] 私の質問:これはバグですか?されfinal不明確な? …