を使用せずに変数の定数を作る私はインタビューでこの質問に出くわした、私は彼らが答えを探していたと思われるfinalキーワード
答えて
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);
}
}
偉大な答えですが、そのようなインタビューの質問の目的は何ですか?あなたが良いプログラマであるかどうかを確認しますか?良いプログラマは、最初にインタースペースで定数を作成しません。 –
@ KrzysztofCichocki私はこのインタビューの質問をしている人ではないので、質問の目的を伝えることはできません。私にとって、これは正当なJava言語のパズルです。 – dasblinkenlight
同じスタイルで別の偉大なパズルを持っている:それはjavaでそれを宣言しない方法からチェック例外をスローすることは可能ですか?はい。しかし、もしあなたがそれを行うなら、あなたは恐ろしいプログラマーです。それで、誰かがそのような質問に対する答えを知っていることを、どんなに重要なことが分かっているのでしょうか? –
あなたが効果的に最終であることを、このような変数を強制することができます。たとえば、ストリームで使用します。
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
実際にこのようなことをする必要はなく、むしろ愚かな面接の質問です。インターフェイスの定数は非常に悪いコードのにおいです。この方法で誰もプログラミングしていないことは良いことですが、これを知らない/覚えていても誘惑されない方が良いです:) –
@MadaraUchihaこの質問はあまりにも広すぎるとは思わない - 決定的な答えを出すための就職インタビューの文脈。 – dasblinkenlight