2017-06-05 13 views
-3

を使用せずに変数の定数を作る私はインタビューでこの質問に出くわした、私は彼らが答えを探していたと思われるfinalキーワード

+0

実際にこのようなことをする必要はなく、むしろ愚かな面接の質問です。インターフェイスの定数は非常に悪いコードのにおいです。この方法で誰もプログラミングしていないことは良いことですが、これを知らない/覚えていても誘惑されない方が良いです:) –

+0

@MadaraUchihaこの質問はあまりにも広すぎるとは思わない - 決定的な答えを出すための就職インタビューの文脈。 – dasblinkenlight

答えて

3

Javaでfinalキーワードなしで可変定を作成する方法「内の自分の変数を宣言することインタフェース "と呼ぶ。 Java言語仕様によると、インタフェースで宣言されたすべての変数は暗黙的に静的および最終的なもの:

interface Foo { 
    int BAR = 100; 
} 
class Test { 
    public static void main (String[] args) throws java.lang.Exception 
    { 
     System.out.println(Foo.BAR); 
    } 
} 
+0

偉大な答えですが、そのようなインタビューの質問の目的は何ですか?あなたが良いプログラマであるかどうかを確認しますか?良いプログラマは、最初にインタースペースで定数を作成しません。 –

+1

@ KrzysztofCichocki私はこのインタビューの質問をしている人ではないので、質問の目的を伝えることはできません。私にとって、これは正当なJava言語のパズルです。 – dasblinkenlight

+0

同じスタイルで別の偉大なパズルを持っている:それはjavaでそれを宣言しない方法からチェック例外をスローすることは可能ですか?はい。しかし、もしあなたがそれを行うなら、あなたは恐ろしいプログラマーです。それで、誰かがそのような質問に対する答えを知っていることを、どんなに重要なことが分かっているのでしょうか? –

0

あなたが効果的に最終であることを、このような変数を強制することができます。たとえば、ストリームで使用します。

int a = 1; 
Stream.of(1, 2, 3, 4, 5).map(e -> e + a).forEach(System.out::println); 

a = 12; // this line leads to a compile error