2017-06-05 101 views
-3

我在採訪中碰到這個問題就來了,那如何讓沒有final關鍵字變量不斷在Java製作一個變量不變,而無需使用final關鍵字

+0

相當愚蠢的面試問題,而不是真正需要在現實生活中做這樣的事情。接口中的常量是非常非常糟糕的代碼氣味。沒有人用這種方式編程是件好事,不知道/記住這個更好,不要被誘惑:) –

+0

@MadaraUchiha我不認爲這個問題太寬泛 - 它具體到面試的背景下提供一個明確的答案。 – dasblinkenlight

回答

3

我懷疑他們在尋找一個答案「內聲明的變量一個界面「。根據Java語言規範,在接口中聲明的所有變量都默認爲static和final:

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

很好的答案,但這樣的面試問題的目的是什麼?檢查你是否是好程序員?好的程序員首先不會在Interaces中創建常量。 –

+1

@KrzysztofCichocki我不是這個面試問題的人,所以我不能告訴你這個問題的目的。對我來說,這是一個合法的Java語言難題。 – dasblinkenlight

+0

好吧,在相同的風格有一個偉大的難題:是否有可能在Java中拋出檢查異常從dosn't不聲明它的方法?是。但是如果你這樣做,那麼你是一個糟糕的程序員,那麼當這個問題有什麼價值的時候,有人知道這個問題的答案,當有更多更重要的事情需要知道時? –

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 
相關問題