2016-03-26 20 views
1

classフィールドにはpublic static finalフィールドがある場合は、 、次にspring Contantsクラスは、これらのフィールドにヘルプを提供するのに役立ちます。大文字小文字の区別はありません

しかし、lower case field name, Contantsは扱いにくいです。 Java仕様の提案 upper casepublic static finalのフィールド名は ですが、lower caseの名前はまだ有効です。

は、例を参照してください。

public class Test { 
    public static final int a = 1; 
    public static final int B = 2; 

    public static void main(String[] args) { 
     org.springframework.core.Constants constants = new org.springframework.core.Constants(Test.class); 
     System.out.println(constants.asNumber("b").intValue()); // line 1 
     System.out.println(constants.asNumber("a").intValue()); // line 2 
    } 
} 

line 1意志出力2、 しかしline 2throw ConstantException: Field 'A' not found in class Test

は、なぜ彼らは大文字と小文字が区別、それらを比較しないのだろうか?そのため大会

答えて

1

、Javaで時定数をコンパイルするには、常にUPPER_UNDERSCOREです。例外なく。 documentation for Constants

から

は含むクラスFoopublic final static int CONSTANT1 = 66;引数「CONSTANT1」を与えられたそのasNumber方法から66の一定の値を返しますFoo.classをラップするこのクラスのインスタンスを考えてみましょう。

のでcamelCaseで名中か(天国の禁止)lower_underscoreは、Javaプログラミング言語に応じて有効です。それは容認された大会に反対し、励まされないことです。

+0

しかし、私はまだConstantをStringユーザーの入力と比較して、大文字に変更する必要はないと考えています。 1行目例外をスローするフィールド 'b'がクラスTestに見つかりません – andy

関連する問題