section 8.1.1 Class Modifiers of the Java Language Specification 8에서, 그것은한다고 다음을 컴파일하십시오 :지정 이상의 클래스 수정
즉, 클래스 수정 자 중 하나를 선택해야한다고 나와 있지만 둘 이상을 선택할 수있었습니다. 여기서 사양을 잘못 해석합니까?
section 8.1.1 Class Modifiers of the Java Language Specification 8에서, 그것은한다고 다음을 컴파일하십시오 :지정 이상의 클래스 수정
즉, 클래스 수정 자 중 하나를 선택해야한다고 나와 있지만 둘 이상을 선택할 수있었습니다. 여기서 사양을 잘못 해석합니까?
대답은 위의 규칙에 전에 1 이상 ClassModifier 중 하나입니다 : 기본적으로
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier <<== Here
ClassModifier: one of
Annotation public protected private abstract static final strictfp
, 규칙이 ClassModifiers
목록에 하나 이상의 ClassModifier
을 사용할 수 있다고 말합니다. 이 "반복적 인"개념의 반복적 인 정의는 BNF 스타일의 구문 설명 (EBNF와는 달리 반복을위한 특별한 구문을 제공함)에 일반적입니다.
죄송합니다. 더 자세한 설명이 필요합니다. NormalClassDeclaration을 보면 ClassModifers (즉, 복수형)가 아닌 {ClassModifier}가 나와 있습니다. 어떻게 읽어야하는지 설명해주십시오. –
@ I.K. '{'
감사합니다. 알았다. –
ClassModifiers Java Language Specification 정확히 알려줍니다
ClassModifiers:
ClassModifier
ClassModifiers ClassModifier
ClassModifier: one of
Annotation public protected private
abstract static final strictfp
을 그래서 클래스
붙여 넣기 전에 세 줄을 읽었습니까? 클래스 선언자는 클래스 수정자를 포함 할 수 있습니다. ClassModifiers : ClassModifier ClassModifiers ClassModifier " – SMA
java7을 의미한다고 확신합니다. 해당하지 않습니다. – msrd0
@ msrd0 java 8 JLS가 위의 라인을 가지고 있지 않습니다. [here] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.1.1)를 참조하십시오. 따라서 OP는 SE 7의 JLS를 읽고 8을 가정합니다. – SMA