Package org.codehaus.janino

# Class Java

java.lang.Object
org.codehaus.janino.Java

public final class Java extends Object
This wrapper class defines classes that represent the elements of the Java programming language.

Notice: "JLS7" refers to the Java Language Specification, Java SE 7 Edition.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`Java.AbstractAnnotation`
Convenience class.
`static class`
`Java.AbstractClassDeclaration`
Base for the various class declaration kinds.
`static class`
`Java.AbstractCompilationUnit`
Holds the result of `Parser.parseAbstractCompilationUnit()`.
`static class`
`Java.AbstractTypeBodyDeclaration`
Abstract implementation of `Java.TypeBodyDeclaration`.
`static class`
`Java.AbstractTypeDeclaration`
Abstract implementation of `Java.TypeDeclaration`.
`static class`
`Java.AccessModifier`
Representation of the modifier flags and annotations that are associated with a declaration.
`static final class`
`Java.AlternateConstructorInvocation`
Representation of a JLS7 8.8.7.1.
`static final class`
`Java.AmbiguousName`
Representation of a JLS7 6.5.2 "ambiguous name".
`static interface`
`Java.Annotatable`
Representation of Java elements that can be annotated: Fields, constructors, methods, type declarations.
`static interface`
`Java.Annotation`
Representation of a Java annotation.
`static interface`
`Java.AnnotationTypeDeclaration`
Base for package member ("top-level") and member ("nested") annotation type declarations.
`static final class`
`Java.AnonymousClassDeclaration`
Representation of a JLS7 15.9.5 "anonymous class declaration".
`static final class`
`Java.ArrayAccessExpression`
Representation of a JLS7 15.13 (JLS8: 15.10.3) "array access expression".
`static final class`
`Java.ArrayCreationReference`
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>arrayType</var>::new`".
`static final class`
`Java.ArrayInitializer`
Representation of a JLS7 10.6 "array initializer".
`static interface`
`Java.ArrayInitializerOrRvalue`
The union of `Java.ArrayInitializer` and `Java.Rvalue`.
`static final class`
`Java.ArrayLength`
Representation of the JLS7 10.7 array type "length" pseudo-member.
`static final class`
`Java.ArrayType`
Representation of a JLS7 10.1 "array type".
`static final class`
`Java.AssertStatement`
Representation of the JLS7 14.10 ASSERT statement.
`static final class`
`Java.Assignment`
Representation of all JLS7 15.26 assignments.
`static class`
`Java.Atom`
Abstract base class for `Java.Type`, `Java.Rvalue`, `Java.Package` and `Java.ConstructorInvocation`.
`static final class`
`Java.BinaryOperation`
Representation of all non-operand-modifying binary operations.
`static final class`
`Java.Block`
Representation of a Java "block" (JLS7 14.2).
`static class`
`Java.BlockLambdaBody`
Representation of a "lambda body" that is a block; see JLS9 15.27.2.
`static interface`
`Java.BlockStatement`
Everything that can be compiled to code, e.g.
`static final class`
`Java.BooleanLiteral`
Representation of a "boolean literal" (JLS7 3.10.3) (type `boolean`).
`static class`
`Java.BooleanRvalue`
Base class for `Java.Rvalue`s that compile better as conditional branches.
`static class`
`Java.BreakableStatement`
Base class for statements that can be terminated abnormally with a `break` statement.
`static final class`
`Java.BreakStatement`
Representation of the JLS7 14.15 BREAK statement.
`static final class`
`Java.Cast`
Representation of a JLS7 15.16 "cast expression".
`static class`
`Java.CatchClause`
Representation of a JLS7 14.20.1 CATCH clause.
`static final class`
`Java.CatchParameter`
Representation of a "catch" parameter.
`static final class`
`Java.CharacterLiteral`
Representation of a "character literal" (JLS7 3.10.4) (type `char`).
`static interface`
`Java.ClassDeclaration`
Base for the various class declarations (top-level class, local class, anonymous class, nested class, top-level enum, nested enum).
`static final class`
`Java.ClassInstanceCreationReference`
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>classType</var>::new`".
`static final class`
`Java.ClassLiteral`
Representation of a JLS7 15.8.2 "class literal".
`static final class`
`Java.CompilationUnit`
Representation of an "ordinary compilation unit" as explained in JLS9 7.3 (before Java 9 known as "compilation unit" and described in JLS8 7.3).
`static final class`
`Java.ConditionalExpression`
Representation of a JLS7 15.25 "conditional operation".
`static final class`
`Java.ConstructorDeclarator`
Representation of a constructor declarator.
`static class`
`Java.ConstructorInvocation`
Abstract bas class for `Java.SuperConstructorInvocation` and `Java.AlternateConstructorInvocation`.
`static class`
`Java.ContinuableStatement`
Base class for statements that support the "continue" statement.
`static final class`
`Java.ContinueStatement`
Representation of the JLS7 14.16 CONTINUE statement.
`static final class`
`Java.Crement`
Representation of a JLS7 15.14.2 "postfix increment operation", a JLS7 15.14.3 "postfix decrement operation", a JLS7 15.15.1 "prefix increment operation" or a JLS7 15.15.2 "prefix decrement operation".
`static interface`
`Java.DocCommentable`
Representation of a Java element that can be annotated with a DOC comment ("`/** ...`
`static final class`
`Java.DoStatement`
Representation of a JLS7 14.13 DO statement.
`static interface`
`Java.ElementValue`
Base of the possible element values in a `Java.NormalAnnotation`.
`static final class`
`Java.ElementValueArrayInitializer`
An element value in the form of an array initializer, e.g.
`static class`
`Java.ElementValuePair`
Representation of a "name = value" element in a `Java.NormalAnnotation`.
`static final class`
`Java.EmptyStatement`
Representation of the "empty statement", i.e.
`static final class`
`Java.EnclosingScopeOfTypeDeclaration`
Lazily determines and returns the enclosing `Java.Scope` of the given `Java.TypeDeclaration`.
`static final class`
`Java.EnumConstant`
Representation of an "enum constant", see JLS7 8.9.1.
`static interface`
`Java.EnumDeclaration`
Base for package member (a.k.a.
`static final class`
`Java.ExportsModuleDirective`
Representation of a (Java 9+) "exports directive", as explained in JLS9 7.7.2.
`static class`
`Java.ExpressionLambdaBody`
Representation of a "lambda body" that is an expression; see JLS9 15.27.2.
`static final class`
`Java.ExpressionStatement`
Representation of the JLS7 14.8 "expression statement".
`static final class`
`Java.FieldAccess`
Representation of an access to a field of a class or an interface.
`static final class`
`Java.FieldAccessExpression`
Representation of a JLS7 15.11 "field access expression", including the "array length" pseudo field access.
`static final class`
`Java.FieldDeclaration`
This class is derived from "Statement", because it provides for the initialization of the field.
`static interface`
`Java.FieldDeclarationOrInitializer`
`static final class`
`Java.FloatingPointLiteral`
Representation of a "floating-point literal" (JLS7 3.10.2) (types `float` and `double`).
`static final class`
`Java.ForEachStatement`
Representation of a JLS7 14.14.2 "enhanced FOR statement".
`static class`
`Java.FormalLambdaParameters`
Representation of "lamba parameters" that include a formal parameter list; see JLS9 15.27.1.
`static final class`
`Java.ForStatement`
Representation of a JLS7 14.14.1 "basic FOR statement".
`static class`
`Java.FunctionDeclarator`
Abstract base class for `Java.ConstructorDeclarator` and `Java.MethodDeclarator`.
`static class`
`Java.IdentifierLambdaParameters`
Representation of "lamba parameters" that consist of a single identifier; see JLS9 15.27.1
`static final class`
`Java.IfStatement`
Representation of a JLS7 14.9 IF statement.
`static class`
`Java.InferredLambdaParameters`
Representation of "lamba parameters" that include an inferred formal parameter list; see JLS9 15.27.1.
`static final class`
`Java.Initializer`
Representation of an "instance initializer" (JLS7 8.6) or "static initializer" (JLS7 8.7).
`static final class`
`Java.Instanceof`
Representation of a JLS7 15.20.2 "type comparison operation".
`static final class`
`Java.IntegerLiteral`
Representation of an "integer literal" (JLS7 3.10.1) (types `int` and `long`).
`static class`
`Java.InterfaceDeclaration`
Base for the various interface declaration kinds.
`static class`
`Java.Invocation`
Abstract base class for `Java.MethodInvocation` and `Java.SuperclassMethodInvocation`.
`static final class`
`Java.LabeledStatement`
Representation of a JLS7 14.7 "labeled statement".
`static interface`
`Java.LambdaBody`
Representation of a "lambda body", see JLS9 15.27.2.
`static class`
`Java.LambdaExpression`
Representation of a (Java 8+) "lambda expression", see JLS9 15.27.
`static interface`
`Java.LambdaParameters`
Base for the various "lambda parameters" styles, see JLS9 15.27.1.
`static class`
`Java.Literal`
Abstract base class for the various Java literals; see JLS7 3.10.
`static final class`
`Java.LocalClassDeclaration`
Representation of a "local class declaration" i.e.
`static final class`
`Java.LocalClassDeclarationStatement`
Representation of the JLS7 14.3 "local class declaration statement".
`static class`
`Java.LocalVariable`
Representation of a local variable while it is in scope during compilation.
`static final class`
`Java.LocalVariableAccess`
Representation of a local variable access -- used during compilation.
`static final class`
`Java.LocalVariableDeclarationStatement`
Representation of a JLS7 14.4 "local variable declaration statement".
`static class`
`Java.LocalVariableSlot`
All local variables have a slot number; local variables that get written into the "local variable table" also have a start and end offset that defines the variable's extent in the bytecode.
`static interface`
`Java.Locatable`
This interface is implemented by objects which are associated with a location in the source code.
`static class`
`Java.Located`
Abstract implementation of `Java.Locatable`.
`static class`
`Java.Lvalue`
Representation of an "lvalue", i.e.
`static final class`
`Java.MarkerAnnotation`
Representation of a "marker annotation", i.e.
`static final class`
`Java.MemberAnnotationTypeDeclaration`
Representation of a member annotation type declaration, a.k.a.
`static class`
`Java.MemberClassDeclaration`
Representation of a "member class declaration", i.e.
`static final class`
`Java.MemberEnumDeclaration`
Representation of a "member enum declaration", i.e.
`static class`
`Java.MemberInterfaceDeclaration`
Representation of a "member interface declaration", i.e.
`static interface`
`Java.MemberTypeDeclaration`
Represents a class or interface declaration where the immediately enclosing scope is another class or interface declaration.
`static final class`
`Java.MethodDeclarator`
Representation of a method declarator.
`static final class`
`Java.MethodInvocation`
Representation of a JLS7 15.12 "method invocation expression".
`static final class`
`Java.MethodReference`
Representation of a "method reference expression", as described in JLS9 15.13, with the form "`<var>referenceType</var>::identifier`.
`static interface`
`Java.Modifier`
Base for the various modifiers (access modifiers, annotations).
`static class`
`Java.Modifiers`
Deprecated.
Many methods that previously accepted a parameter of this type now take a `Java.Modifier``[]` (incompatible API change in JANINO version 3.0.13)
`static final class`
`Java.ModularCompilationUnit`
Represents a `ModularCompilationUnit` as specified in JLS11 7.3.
`static final class`
`Java.ModuleDeclaration`
Representation of a "module declaration", as described in JLS9 7.7.
`static interface`
`Java.ModuleDirective`
Representation of a (Java 9+) "module directive", as explained in JLS9 7.7.
`static class`
`Java.NamedClassDeclaration`
Base for the various named class declarations.
`static interface`
`Java.NamedTypeDeclaration`
Represents the declaration of a class or an interface that has a name.
`static final class`
`Java.NewAnonymousClassInstance`
Representation of a JLS7 15.9 "anonymous class instance creation expression".
`static final class`
`Java.NewArray`
Representation of a JLS7 15.10 "array creation expression".
`static final class`
`Java.NewClassInstance`
Representation of a JLS7 "class instance creation expression".
`static final class`
`Java.NewInitializedArray`
Representation of a JLS7 15.10 "array creation expression".
`static final class`
`Java.NormalAnnotation`
A "normal annotation", i.e.
`static final class`
`Java.NullLiteral`
Representation of a "null literal" (JLS7 3.10.7).
`static final class`
`Java.OpensModuleDirective`
Representation of a (Java 9+) "opens directive", as explained in JLS9 7.7.2.
`static final class`
`Java.Package`
Representation of a JLS7 6.5.2.1.5 "package name".
`static class`
`Java.PackageDeclaration`
Representation of a package declaration like `package com.acme.tools;`.
`static final class`
`Java.PackageMemberAnnotationTypeDeclaration`
Representation of a package member annotation type declaration, a.k.a.
`static class`
`Java.PackageMemberClassDeclaration`
Implementation of a "package member class declaration", a.k.a.
`static final class`
`Java.PackageMemberEnumDeclaration`
Implementation of a "package member enum declaration", a.k.a.
`static class`
`Java.PackageMemberInterfaceDeclaration`
Representation of a "package member interface declaration", a.k.a.
`static interface`
`Java.PackageMemberTypeDeclaration`
Represents a class or interface declaration on compilation unit level.
`static final class`
`Java.ParameterAccess`
"Artificial" operation for accessing the parameters of the synthetic constructor of an anonymous class.
`static final class`
`Java.ParenthesizedExpression`
Representation of a JLS7 15.8.5 "parenthesized expression".
`static enum`
`Java.Primitive`
Java's primitive types.
`static final class`
`Java.PrimitiveType`
Representation of a JLS7 4.2 "primitive type", i.e a primitive type "usage", which has a location.
`static final class`
`Java.ProvidesModuleDirective`
Representation of a (Java 9+) "provides directive", as explained in JLS9 7.7.4.
`static final class`
`Java.QualifiedThisReference`
Representation of an JLS7 15.8.4 access to the current object or an enclosing instance.
`static final class`
`Java.ReferenceType`
Representation of a JLS7 4.3 reference type.
`static final class`
`Java.RequiresModuleDirective`
Representation of a (Java 9+) "requires directive", as explained in JLS9 7.7.1.
`static final class`
`Java.ReturnStatement`
Representation of the JLS7 14.17 RETURN statement.
`static class`
`Java.Rvalue`
Representation of an "rvalue", i.e.
`static final class`
`Java.RvalueMemberType`
Representation of the first part of a JLS7 15.9 "Qualified class instance creation expression": The "`a.new MyClass`" part of "`a.new MyClass(...)`" expression.
`static interface`
`Java.Scope`
Representation of a Java "scope", e.g.
`static final class`
`Java.SimpleConstant`
This class is not used when code is parsed; it is intended for "programmatic" literals.
`static final class`
`Java.SimpleType`
This class is not used when code is parsed; it is intended for "programmatic" types.
`static final class`
`Java.SingleElementAnnotation`
Representation of a "single-element annotation", i.e.
`static class`
`Java.Statement`
Everything that can occur in the body of a method or in a block.
`static final class`
`Java.StringLiteral`
Representation of a "string literal" (JLS7 3.10.5) (type `String`).
`static final class`
`Java.SuperclassFieldAccessExpression`
Representation of an JLS7 "superclass field access expression", e.g.
`static final class`
`Java.SuperclassMethodInvocation`
Representation of a JLS7 15.12.1.1.3 "superclass method invocation".
`static final class`
`Java.SuperConstructorInvocation`
Representation of a JLS7 8.8.7.1.
`static final class`
`Java.SwitchStatement`
The JLS7 14.10 `switch` Statement.
`static final class`
`Java.SynchronizedStatement`
Representation of a JLS7 14.9 SYNCHRONIZED statement.
`static final class`
`Java.TextBlock`
Representation of a "text block" (JLS17 3.10.6 Text Blocks) (type `String`).
`static final class`
`Java.ThisReference`
Representation of an JLS7 15.8.3 access to the innermost enclosing instance.
`static final class`
`Java.ThrowStatement`
Representation of a JLS7 14.18 THROW statement.
`static final class`
`Java.TryStatement`
Representation of a JLS7 14.20 TRY statement.
`static class`
`Java.Type`
Representation of a Java type.
`static interface`
`Java.TypeArgument`
Representation of a JLS7 4.5.1 type argument.
`static interface`
`Java.TypeBodyDeclaration`
Representation of a "ClassBodyDeclaration" or an "InterfaceMemberDeclaration".
`static interface`
`Java.TypeDeclaration`
Base for the various kinds of type declarations, e.g.
`static class`
`Java.TypeParameter`
Representation of a type parameter (which declares a type variable).
`static final class`
`Java.UnaryOperation`
Representation of a JLS7 15.15.3 "unary plus operator", a JLS7 15.15.4 "unary minus operator", a JLS7 15.15.5 "bitwise complement operator" or a JLS7 15.15.6 "logical complement operator".
`static final class`
`Java.UsesModuleDirective`
Representation of a (Java 9+) "uses directive", as explained in JLS9 7.7.3.
`static final class`
`Java.VariableDeclarator`
Used by FieldDeclaration and LocalVariableDeclarationStatement.
`static final class`
`Java.WhileStatement`
Representation of the JLS7 14.2 WHILE statement.
`static class`
`Java.Wildcard`
Representation of a JLS7 4.5.1 "wildcard".

## Method Summary

Modifier and Type
Method
Description
`static Java.AccessModifier[]`
`accessModifiers(Location location, String... keywords)`
`static String`
`join(Object[][] aa, String innerSeparator, String outerSeparator)`
`static String`
`join(Object[] a, String separator)`
`static String`
`join(Object[] a, String separator, int off, int len)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Method Details

### join

public static String join(Object[] a, String separator)

Returns:
  `null` iff `a == null`, or "" iff `a.length == 0`, or the elements of `a`, converted to strings concatenated and separated with the separator

### join

public static String join(Object[][] aa, String innerSeparator, String outerSeparator)

Returns:
  `null` iff `aa == null`, or "" iff `aa.length == 0`, or the elements of `aa`, converted to strings concatenated and separated with the outerSeparator

### join

public static String join(Object[] a, String separator, int off, int len)

Returns:
  `""` iff off `>=` len, or elements off ... len`-1` of a, converted to strings, concatenated and separated with the separator

### accessModifiers

public static Java.AccessModifier[] accessModifiers(Location location, String... keywords)

Returns:
  An array of `Java.Modifier`s, parsed from a sequence of access modifier keywords