2010-04-27 83 views
13

我用Java編寫了一會,我剛剛遇到這種語法首次:什麼時候你會在方括號後面加分號?

public Object getSomething(){return something;}; 

有趣的是我最終的分號。它似乎不會導致編譯器錯誤,並據我所知不會產生運行時錯誤,所以它似乎是有效的語法。我什麼時候可以使用這種語法?或者它只是被允許但通常不被使用的東西?

+1

注意:同樣適用於類 - 您可以在'C++'-style中使用';'終止它們;使用直接移植的代碼時會派上用場。 – vaxquis 2015-07-12 16:41:23

回答

17

語法允許它作爲無害語法錯誤的讓步,但通常不會使用它,並不意味着任何不同之處(比將分號留出)。

正如};內部的方法(如if塊之後)是一個空語句,並且被允許,外的方法被認爲是無效的聲明,並且被允許一個錯誤的分號

具體而言,從Java Language Specification以下生產允許這樣的:

ClassBodyDeclaration: 
    ; 
    [static] Block 
    ModifiersOpt MemberDecl 
11

這只是一個空的陳述 - 它很可能是一個錯字。

考慮到在所有基於C的語言中,語句都以分號結尾的事實。像這樣的分號只是簡單地終止了當前的聲明,在這種情況下什麼也不是。

+0

所以我可以在技術上添加任意數量的分號,而不是聲明的中間位置? – froadie 2010-04-27 19:34:11

+3

@froadie - 是的,你可以做到這一點。 – 2010-04-27 19:36:27

8

或者只是東西是允許的,但一般不採用?

就是這樣。它是有效的Java,但不做任何事情:

public class X { 
    ;;;;;;;;;;;;;;;;;; 
    ;;;;; 
    ; 
} 
相關問題