# jls7_translate **Repository Path**: lkn2015/jls7_translate ## Basic Information - **Project Name**: jls7_translate - **Description**: Java Languish Specification JavaSE 7 Edition 翻译 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2015-03-10 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jls7_translate # *“可能我只是想做这么一件事来为我的大学生活留下一份珍贵的记忆吧”* Java Language Specification 被称为Java 圣经。 此项目致力于翻译JLS的JavaSE 7 Edition。 翻译漫漫,不求翻译一定做到信达雅,但求慎终如始,不忘初心! 谨以此记。 刘凯宁 20150309 ---------- #此目录完全按照JLS7设置 ##Preface to the Java SE 7 Edition ##Preface to the Third Edition ##Preface to the Second Edition ##Preface to the First Edition ##1 Introduction 1.1 Organization of the Specification 1.2 Example Programs 1.3 Notation 1.4 Relationship to Predefined Classes and Interfaces 1.5 References ## 2 Grammars 2.1 Context-Free Grammars 2.2 The Lexical Grammar 2.3 The Syntactic Grammar 2.4 Grammar Notation ## 3 Lexical Structure 3.1 Unicode 3.2 Lexical Translations 3.3 Unicode Escapes 3.4 Line Terminators 3.5 Input Elements and Tokens 3.6 White Space 3.7 Comments 3.8 Identifiers 3.9 Keywords 3.10 Literals 3.10.1 Integer Literals 3.10.2 Floating-Point Literals 3.10.3 Boolean Literals 3.10.4 Character Literals 3.10.5 String Literals 3.10.6 Escape Sequences for Character and String Literals 3.10.7 The Null Literal 3.11 Separators 3.12 Operators ##4 Types, Values, and Variables 4.1 The Kinds of Types and Values 4.2 Primitive Types and Values 4.2.1 Integral Types and Values 4.2.2 Integer Operations 4.2.3 Floating-Point Types, Formats, and Values 4.2.4 Floating-Point Operations 4.2.5 The boolean Type and boolean Values 4.3 Reference Types and Values 4.3.1 Objects 4.3.2 The Class Object 4.3.3 The Class String 4.3.4 When Reference Types Are the Same 4.4 Type Variables 4.5 Parameterized Types 4.5.1 Type Arguments and Wildcards 4.5.2 Members and Constructors of Parameterized Types 4.6 Type Erasure 4.7 Reifiable Types 4.8 Raw Types 4.9 Intersection Types 4.10 Subtyping 4.10.1 Subtyping among Primitive Types 4.10.2 Subtyping among Class and Interface Types 4.10.3 Subtyping among Array Types 4.11 Where Types Are Used 4.12 Variables 4.12.1 Variables of Primitive Type 4.12.2 Variables of Reference Type 4.12.3 Kinds of Variables 4.12.4 final Variables 4.12.5 Initial Values of Variables 4.12.6 Types, Classes, and Interfaces ## 5 Conversions and Promotions 5.1 Kinds of Conversion 5.1.1 Identity Conversion 5.1.2 Widening Primitive Conversion 5.1.3 Narrowing Primitive Conversion 5.1.4 Widening and Narrowing Primitive Conversion 5.1.5 Widening Reference Conversion 5.1.6 Narrowing Reference Conversion 5.1.7 Boxing Conversion 5.1.8 Unboxing Conversion 5.1.9 Unchecked Conversion 5.1.10 Capture Conversion 5.1.11 String Conversion 5.1.12 Forbidden Conversions 5.1.13 Value Set Conversion 5.2 Assignment Conversion 5.3 Method Invocation Conversion 5.4 String Conversion 5.5 Casting Conversion 5.5.1 Reference Type Casting 5.5.2 Checked Casts and Unchecked Casts 5.5.3 Checked Casts at Run Time 5.6 Numeric Promotions 5.6.1 Unary Numeric Promotion 5.6.2 Binary Numeric Promotion ## 6 Names 6.1 Declarations 6.2 Names and Identifiers 6.3 Scope of a Declaration 6.4 Shadowing and Obscuring 6.4.1 Shadowing 6.4.2 Obscuring 6.5 Determining the Meaning of a Name 6.5.1 Syntactic Classification of a Name According to Context 6.5.2 Reclassification of Contextually Ambiguous Names 6.5.3 Meaning of Package Names 6.5.3.1 Simple Package Names 6.5.3.2 Qualified Package Names 6.5.4 Meaning of PackageOrTypeNames 6.5.4.1 Simple PackageOrTypeNames 6.5.4.2 Qualified PackageOrTypeNames 6.5.5 Meaning of Type Names 6.5.5.1 Simple Type Names 6.5.5.2 Qualified Type Names 6.5.6 Meaning of Expression Names 6.5.6.1 Simple Expression Names 6.5.6.2 Qualified Expression Names 6.5.7 Meaning of Method Names 6.5.7.1 Simple Method Names 6.5.7.2 Qualified Method Names 6.6 Access Control 6.6.1 Determining Accessibility 6.6.2 Details on protected Access 6.6.2.1 Access to a protected Member 6.6.2.2 Qualified Access to a protected Constructor 6.7 Fully Qualified Names and Canonical Names ## 7 Packages 7.1 Package Members 7.2 Host Support for Packages 7.3 Compilation Units 7.4 Package Declarations 7.4.1 Named Packages 7.4.2 Unnamed Packages 7.4.3 Observability of a Package 7.5 Import Declarations 7.5.1 Single-Type-Import Declarations 7.5.2 Type-Import-on-Demand Declarations 7.5.3 Single-Static-Import Declarations 7.5.4 Static-Import-on-Demand Declarations 7.6 Top Level Type Declarations ## 8 Classes 8.1 Class Declarations 8.1.1 Class Modifiers 8.1.1.1 abstract Classes 8.1.1.2 final Classes 8.1.1.3 strictfp Classes 8.1.2 Generic Classes and Type Parameters 8.1.3 Inner Classes and Enclosing Instances 8.1.4 Superclasses and Subclasses 8.1.5 Superinterfaces 8.1.6 Class Body and Member Declarations 8.2 Class Members 8.3 Field Declarations 8.3.1 Field Modifiers 8.3.1.1 static Fields 8.3.1.2 final Fields 8.3.1.3 transient Fields 8.3.1.4 volatile Fields 8.3.2 Initialization of Fields 8.3.2.1 Initializers for Class Variables 8.3.2.2 Initializers for Instance Variables 8.3.2.3 Restrictions on the use of Fields during Initialization 8.4 Method Declarations 8.4.1 Formal Parameters 8.4.2 Method Signature 8.4.3 Method Modifiers 8.4.3.1 abstract Methods 8.4.3.2 static Methods 8.4.3.3 final Methods 8.4.3.4 native Methods 8.4.3.5 strictfp Methods 8.4.3.6 synchronized Methods 8.4.4 Generic Methods 8.4.5 Method Return Type 8.4.6 Method Throws 8.4.7 Method Body 8.4.8 Inheritance, Overriding, and Hiding 8.4.8.1 Overriding (by Instance Methods) 8.4.8.2 Hiding (by Class Methods) 8.4.8.3 Requirements in Overriding and Hiding 8.4.8.4 Inheriting Methods with Override-Equivalent Signatures 8.4.9 Overloading 8.5 Member Type Declarations 8.5.1 Static Member Type Declarations 8.6 Instance Initializers 8.7 Static Initializers 8.8 Constructor Declarations 8.8.1 Formal Parameters and Type Parameters 8.8.2 Constructor Signature 8.8.3 Constructor Modifiers 8.8.4 Generic Constructors 8.8.5 Constructor Throws 8.8.6 The Type of a Constructor 8.8.7 Constructor Body 8.8.7.1 Explicit Constructor Invocations 8.8.8 Constructor Overloading 8.8.9 Default Constructor 8.8.10 Preventing Instantiation of a Class 8.9 Enums 8.9.1 Enum Constants 8.9.2 Enum Body Declarations ## 9 Interfaces 9.1 Interface Declarations 9.1.1 Interface Modifiers 9.1.1.1 abstract Interfaces 9.1.1.2 strictfp Interfaces 9.1.2 Generic Interfaces and Type Parameters 9.1.3 Superinterfaces and Subinterfaces 9.1.4 Interface Body and Member Declarations 9.2 Interface Members 9.3 Field (Constant) Declarations 9.3.1 Initialization of Fields in Interfaces 9.4 Abstract Method Declarations 9.4.1 Inheritance and Overriding 9.4.1.1 Overriding (by Instance Methods) 9.4.1.2 Requirements in Overriding 9.4.1.3 Inheriting Methods with Override-Equivalent Signatures 9.4.2 Overloading 9.5 Member Type Declarations 9.6 Annotation Types 9.6.1 Annotation Type Elements 9.6.2 Defaults for Annotation Type Elements 9.6.3 Predefined Annotation Types 9.6.3.1 @Target 9.6.3.2 @Retention 9.6.3.3 @Inherited 9.6.3.4 @Override 9.6.3.5 @SuppressWarnings 9.6.3.6 @Deprecated 9.6.3.7 @SafeVarargs 9.7 Annotations 9.7.1 Normal Annotations 9.7.2 Marker Annotations 9.7.3 Single-Element Annotations ## 10 Arrays 10.1 Array Types 10.2 Array Variables 10.3 Array Creation 10.4 Array Access 10.5 Array Store Exception 10.6 Array Initializers 10.7 Array Members 10.8 Class Objects for Arrays 10.9 An Array of Characters is Not a String ## 11 Exceptions 11.1 The Kinds and Causes of Exceptions 11.1.1 The Kinds of Exceptions 11.1.2 The Causes of Exceptions 11.1.3 Asynchronous Exceptions 11.2 Compile-Time Checking of Exceptions 11.2.1 Exception Analysis of Expressions 11.2.2 Exception Analysis of Statements 11.2.3 Exception Checking 11.3 Run-Time Handling of an Exception ## 12 Execution 12.1 Java Virtual Machine Startup 12.1.1 Load the Class Test 12.1.2 Link Test: Verify, Prepare, (Optionally) Resolve 12.1.3 Initialize Test: Execute Initializers 12.1.4 Invoke Test.main 12.2 Loading of Classes and Interfaces 12.2.1 The Loading Process 12.3 Linking of Classes and Interfaces 12.3.1 Verification of the Binary Representation 12.3.2 Preparation of a Class or Interface Type 321 12.3.3 Resolution of Symbolic References 321 12.4 Initialization of Classes and Interfaces 12.4.1 When Initialization Occurs 12.4.2 Detailed Initialization Procedure 12.5 Creation of New Class Instances 12.6 Finalization of Class Instances 12.6.1 Implementing Finalization 332 12.6.2 Interaction with the Memory Model 12.7 Unloading of Classes and Interfaces 12.8 Program Exit ## 13 Binary Compatibility 13.1 The Form of a Binary 13.2 What Binary Compatibility Is and Is Not 13.3 Evolution of Packages 13.4 Evolution of Classes 13.4.1 abstract Classes 13.4.2 final Classes 13.4.3 public Classes 13.4.4 Superclasses and Superinterfaces 13.4.5 Class Type Parameters 13.4.6 Class Body and Member Declarations 13.4.7 Access to Members and Constructors 13.4.8 Field Declarations 13.4.9 final Fields and Constants 13.4.10 static Fields 13.4.11 transient Fields 13.4.12 Method and Constructor Declarations 13.4.13 Method and Constructor Type Parameters 13.4.14 Method and Constructor Formal Parameters 13.4.15 Method Result Type 13.4.16 abstract Methods 13.4.17 final Methods 13.4.18 native Methods 13.4.19 static Methods 13.4.20 synchronized Methods 13.4.21 Method and Constructor Throws 13.4.22 Method and Constructor Body 13.4.23 Method and Constructor Overloading 13.4.24 Method Overriding 13.4.25 Static Initializers 13.4.26 Evolution of Enums 13.5 Evolution of Interfaces 13.5.1 public Interfaces 13.5.2 Superinterfaces 13.5.3 Interface Members 13.5.4 Interface Type Parameters 13.5.5 Field Declarations 13.5.6 abstract Methods 13.5.7 Evolution of Annotation Types ## 14 Blocks and Statements 14.1 Normal and Abrupt Completion of Statements 14.2 Blocks 14.3 Local Class Declarations 14.4 Local Variable Declaration Statements 14.4.1 Local Variable Declarators and Types 14.4.2 Execution of Local Variable Declarations 14.5 Statements 14.6 The Empty Statement 14.7 Labeled Statements 14.8 Expression Statements 14.9 The if Statement 14.9.1 The if-then Statement 14.9.2 The if-then-else Statement 14.10 The assert Statement 14.11 The switch Statement 14.12 The while Statement 14.12.1 Abrupt Completion of while Statement 14.13 The do Statement 14.13.1 Abrupt Completion of do Statement 14.14 The for Statement 14.14.1 The basic for Statement 14.14.1.1 Initialization of for Statement 14.14.1.2 Iteration of for Statement 14.14.1.3 Abrupt Completion of for Statement 14.14.2 The enhanced for statement 14.15 The break Statement 14.16 The continue Statement 14.17 The return Statement 14.18 The throw Statement 14.19 The synchronized Statement 14.20 The try statement 14.20.1 Execution of try-catch 14.20.2 Execution of try-finally and try-catch-finally 14.20.3 try-with-resources 14.20.3.1 Basic try-with-resources 14.20.3.2 Extended try-with-resources 14.21 Unreachable Statements ## 15 Expressions 15.1 Evaluation, Denotation, and Result 15.2 Variables as Values 15.3 Type of an Expression 15.4 FP-strict Expressions 15.5 Expressions and Run-Time Checks 15.6 Normal and Abrupt Completion of Evaluation 15.7 Evaluation Order 15.7.1 Evaluate Left-Hand Operand First 15.7.2 Evaluate Operands before Operation 15.7.3 Evaluation Respects Parentheses and Precedence 15.7.4 Argument Lists are Evaluated Left-to-Right 15.7.5 Evaluation Order for Other Expressions 15.8 Primary Expressions 15.8.1 Lexical Literals 15.8.2 Class Literals 15.8.3 this 15.8.4 Qualified this 15.8.5 Parenthesized Expressions 15.9 Class Instance Creation Expressions 15.9.1 Determining the Class being Instantiated 15.9.2 Determining Enclosing Instances 15.9.3 Choosing the Constructor and its Arguments 15.9.4 Run-Time Evaluation of Class Instance Creation Expressions 15.9.5 Anonymous Class Declarations 15.9.5.1 Anonymous Constructors 15.10 Array Creation Expressions 15.10.1 Run-Time Evaluation of Array Creation Expressions 15.11 Field Access Expressions 15.11.1 Field Access Using a Primary 15.11.2 Accessing Superclass Members using super 15.12 Method Invocation Expressions 15.12.1 Compile-Time Step 1: Determine Class or Interface to Search 15.12.2 Compile-Time Step 2: Determine Method Signature 15.12.2.1 Identify Potentially Applicable Methods 15.12.2.2 Phase 1: Identify Matching Arity Methods Applicable by Subtyping 15.12.2.3 Phase 2: Identify Matching Arity Methods Applicable by Method Invocation Conversion 15.12.2.4 Phase 3: Identify Applicable Variable Arity Methods 15.12.2.5 Choosing the Most Specific Method 15.12.2.6 Method Result and Throws Types 15.12.2.7 Inferring Type Arguments Based on Actual Arguments 15.12.2.8 Inferring Unresolved Type Arguments 15.12.3 Compile-Time Step 3: Is the Chosen Method Appropriate? 15.12.4 Run-Time Evaluation of Method Invocation 15.12.4.1 Compute Target Reference (If Necessary) 15.12.4.2 Evaluate Arguments 15.12.4.3 Check Accessibility of Type and Method 15.12.4.4 Locate Method to Invoke 15.12.4.5 Create Frame, Synchronize, Transfer Control 15.13 Array Access Expressions 15.13.1 Run-Time Evaluation of Array Access 15.14 Postfix Expressions 15.14.1 Expression Names 15.14.2 Postfix Increment Operator ++ 15.14.3 Postfix Decrement Operator -- 15.15 Unary Operators 15.15.1 Prefix Increment Operator ++ 15.15.2 Prefix Decrement Operator -- 15.15.3 Unary Plus Operator + 15.15.4 Unary Minus Operator - 15.15.5 Bitwise Complement Operator ~ 15.15.6 Logical Complement Operator ! 15.16 Cast Expressions 15.17 Multiplicative Operators 15.17.1 Multiplication Operator * 15.17.2 Division Operator / 15.17.3 Remainder Operator % 15.18 Additive Operators 15.18.1 String Concatenation Operator + 15.18.2 Additive Operators (+ and -) for Numeric Types 15.19 Shift Operators 15.20 Relational Operators 15.20.1 Numerical Comparison Operators <, <=, >, and >= 15.20.2 Type Comparison Operator instanceof 15.21 Equality Operators 15.21.1 Numerical Equality Operators == and != 15.21.2 Boolean Equality Operators == and != 15.21.3 Reference Equality Operators == and != 15.22 Bitwise and Logical Operators 15.22.1 Integer Bitwise Operators &, ^, and | 15.22.2 Boolean Logical Operators &, ^, and | 15.23 Conditional-And Operator && 15.24 Conditional-Or Operator || 15.25 Conditional Operator ? : 15.26 Assignment Operators 15.26.1 Simple Assignment Operator = 15.26.2 Compound Assignment Operators 15.27 Expression 15.28 Constant Expressions ## 16 Definite Assignment 16.1 Definite Assignment and Expressions 16.1.1 Boolean Constant Expressions 16.1.2 Conditional-And Operator && 16.1.3 Conditional-Or Operator || 16.1.4 Logical Complement Operator ! 16.1.5 Conditional Operator ? : 16.1.6 Conditional Operator ? : 16.1.7 Other Expressions of Type boolean 16.1.8 Assignment Expressions 16.1.9 Operators ++ and -- 16.1.10 Other Expressions 16.2 Definite Assignment and Statements 16.2.1 Empty Statements 16.2.2 Blocks 16.2.3 Local Class Declaration Statements 16.2.4 Local Variable Declaration Statements 16.2.5 Labeled Statements 16.2.6 Expression Statements 16.2.7 if Statements 16.2.8 assert Statements 16.2.9 switch Statements 16.2.10 while Statements 16.2.11 do Statements 16.2.12 for Statements 16.2.12.1 Initialization Part of for Statement 16.2.12.2 Incrementation Part of for Statement 16.2.13 break, continue, return, and throw Statements 16.2.14 synchronized Statements 16.2.15 try Statements 16.3 Definite Assignment and Parameters 16.4 Definite Assignment and Array Initializers 16.5 Definite Assignment and Enum Constants 16.6 Definite Assignment and Anonymous Classes 16.7 Definite Assignment and Member Types 16.8 Definite Assignment and Static Initializers 16.9 Definite Assignment, Constructors, and Instance Initializers ## 17 Threads and Locks 17.1 Synchronization 17.2 Wait Sets and Notification 17.2.1 Wait 17.2.2 Notification 17.2.3 Interruptions 17.2.4 Interactions of Waits, Notification, and Interruption 17.3 Sleep and Yield 17.4 Memory Model 17.4.1 Shared Variables 17.4.2 Actions 17.4.3 Programs and Program Order 17.4.4 Synchronization Order 17.4.5 Happens-before Order 17.4.6 Executions 17.4.7 Well-Formed Executions 17.4.8 Executions and Causality Requirements 17.4.9 Observable Behavior and Nonterminating Executions 17.5 final Field Semantics 17.5.1 Semantics of final Fields 17.5.2 Reading final Fields During Construction 17.5.3 Subsequent Modification of final Fields 17.5.4 Write-protected Fields 17.6 Word Tearing 17.7 Non-atomic Treatment of double and long ## 18 Syntax ## Limited License Grant