Names and Identifiers

 

JLS:https://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html#jls-6.2

 

Not all identifiers in a program are a part of a name. Identifiers are also used in the following situations:

(1)In declarations (§6.1), where an identifier may occur to specify the name by which the declared entity will be known.

(2)As labels in labeled statements (§14.7) and in break andcontinue statements (§14.15, §14.16) that refer to statement labels.

(3)In field access expressions (§15.11), where an identifier occurs after a "." token to indicate a member of an object that is the value of an expression or the keyword super that appears before the "." token

 

  

  

 

(4)In some method invocation expressions (§15.12), where an identifier may occur after a "." token and before a "(" token to indicate a method to be invoked for an object that is the value of an expression or the keyword super that appears before the "." token

 

(5)In qualified class instance creation expressions (§15.9), where an identifier occurs immediately to the right of the leftmost new token to indicate a type that must be a member of the compile-time type of the primary expression preceding the "." preceding the leftmost new token.

 

 

 

 

 

1、Primary Expressions 

 

Primary:
    PrimaryNoNewArray
    ArrayCreationExpression

PrimaryNoNewArray:
    Literal
    Type . class
    void . class
    this
    ClassName . this
    ( Expression )
    ClassInstanceCreationExpression
    FieldAccess
    MethodInvocation
    ArrayAccess

 

 

 

15.8.1. Lexical Literals 

 

Literal:
    IntegerLiteral
    FloatingPointLiteral
    BooleanLiteral
    CharacterLiteral
    StringLiteral
    NullLiteral

 

 

 

15.8.2. Class Literals

 

class TC{
	public void test(){
		//Object t = T.class; // error
		Class l = ArrayList.class;  
		// Class l = ArrayList.class; // error 
		Class o = int.class;
		Class v = void.class;
		
	}
}

 

 

 

15.8.3. this

 

 

 

15.8.4. Qualified this 

 

 

 

15.8.5. Parenthesized Expressions

 

 

 

2、Field Access Expressions

 

FieldAccess: 
    Primary . Identifier
    super . Identifier
    ClassName . super . Identifier

 

  

 

 

 

3、Method Invocation Expressions

 

MethodInvocation:
    MethodName ( ArgumentListopt )
    Primary . NonWildTypeArgumentsopt Identifier ( ArgumentListopt )
    super . NonWildTypeArgumentsopt Identifier ( ArgumentListopt )
    ClassName . super . NonWildTypeArgumentsopt Identifier ( ArgumentListopt )
    TypeName . NonWildTypeArguments Identifier ( ArgumentListopt )

 

3.1、ArgumentList

 

ArgumentList:
    Expression
    ArgumentList , Expression

 

  

 

 

 

4、Class Instance Creation Expressions 

 

ClassInstanceCreationExpression:
    new TypeArgumentsopt TypeDeclSpecifier TypeArgumentsOrDiamondopt
                          ( ArgumentListopt ) ClassBodyopt
    Primary . new TypeArgumentsopt Identifier TypeArgumentsOrDiamondopt
                          ( ArgumentListopt ) ClassBodyopt

TypeArgumentsOrDiamond:
    TypeArguments
    <> 

ArgumentList:
    Expression
    ArgumentList , Expression

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

你可能感兴趣的:(Names and Identifiers)