列挙型のインターフェイスを実装しますが、なぜ日食が自動的にオーバーライドされるインターフェイスメソッドの前にセミコロンを置きますか?

acidic_base:

私が持っているinterfaceenum

私は実装していますinterface中にenum

私は使用していますeclipse私のIDEとして

以下は、私のあるinterfaceファイル-

ITrafficSignal.java - >

public interface ITrafficSignal {
    public void showAction();
}

以下は、私のあるenumファイル-

ETrafficSignal.java - >

public enum ETrafficSignal implements ITrafficSignal {
    ;

    @Override
    public void showAction() {

    }
}

ここでは;2行目では、自動的にによって置かれてされていますeclipse

私は削除した場合;、その後でmethodビーイングimplemented-

public void showAction()

下の赤い線を持っているkeyword voidとエラーが語ります-

Multiple markers at this line 
- implements ITrafficSignal.showAction
- Syntax error on token "void", volatile expected

私はこれを理解することができません。

なスロー:

それは、単に列挙型の構文です。以下からの§8.9enum型Java言語仕様

EnumDeclaration:
  {ClassModifier} enum TypeIdentifier [Superinterfaces] EnumBody 

そして、の構文はEnumBody次のとおりです。

EnumBody:
  { [EnumConstantList] [,] [EnumBodyDeclarations] }

EnumConstantList:
  EnumConstant {, EnumConstant}

EnumConstant:
  {EnumConstantModifier} Identifier [( [ArgumentList] )] [ClassBody]

EnumConstantModifier:
  Annotation

そして最後の構文はEnumBodyDeclarations次のとおりです。

EnumBodyDeclarations:
  ; {ClassBodyDeclaration} 

あなたが見ることができるように、列挙体の宣言は、セミコロン(が先行されなければならないことは、上記に示し;enum定数からそれを分離します)。異なり、EnumConstantListセミコロンはオプションではありません1私は個人的に定数のない列挙型を持つのポイントが表示されていないものの、関係なく、任意の列挙型定数を宣言そこにいるの列挙体の宣言があるかどうこの手段は、セミコロンが存在しなければなりません。


1.全体がEnumBodyDeclarationsオプションである、しかし、その後、セミコロンを省略することができる何体宣言をがない場合を意味します。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=300346&siteId=1