我用Java編寫了一會,我剛剛遇到這種語法首次:什麼時候你會在方括號後面加分號?
public Object getSomething(){return something;};
有趣的是我最終的分號。它似乎不會導致編譯器錯誤,並據我所知不會產生運行時錯誤,所以它似乎是有效的語法。我什麼時候可以使用這種語法?或者它只是被允許但通常不被使用的東西?
我用Java編寫了一會,我剛剛遇到這種語法首次:什麼時候你會在方括號後面加分號?
public Object getSomething(){return something;};
有趣的是我最終的分號。它似乎不會導致編譯器錯誤,並據我所知不會產生運行時錯誤,所以它似乎是有效的語法。我什麼時候可以使用這種語法?或者它只是被允許但通常不被使用的東西?
語法允許它作爲無害語法錯誤的讓步,但通常不會使用它,並不意味着任何不同之處(比將分號留出)。
正如};
內部的方法(如if
塊之後)是一個空語句,並且被允許,外的方法被認爲是無效的聲明,並且被允許一個錯誤的分號。
具體而言,從Java Language Specification以下生產允許這樣的:
ClassBodyDeclaration: ; [static] Block ModifiersOpt MemberDecl
這只是一個空的陳述 - 它很可能是一個錯字。
考慮到在所有基於C的語言中,語句都以分號結尾的事實。像這樣的分號只是簡單地終止了當前的聲明,在這種情況下什麼也不是。
所以我可以在技術上添加任意數量的分號,而不是聲明的中間位置? – froadie 2010-04-27 19:34:11
@froadie - 是的,你可以做到這一點。 – 2010-04-27 19:36:27
或者只是東西是允許的,但一般不採用?
就是這樣。它是有效的Java,但不做任何事情:
public class X {
;;;;;;;;;;;;;;;;;;
;;;;;
;
}
注意:同樣適用於類 - 您可以在'C++'-style中使用';'終止它們;使用直接移植的代碼時會派上用場。 – vaxquis 2015-07-12 16:41:23