/* * Copyright 2000-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.psi; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * Represents the call of a Java class constructor (a simple or qualified class instance * creation expression, or an array creation expression). */ public interface PsiNewExpression extends PsiCallExpression, PsiConstructorCall { /** * Returns the qualifier (expression specifying instance of outer class) for a * qualified class instance creation expression. * * @return the qualifier, or null if the expression is not qualified. */ @Nullable PsiExpression getQualifier(); /** * Returns the expressions specifying the dimensions of the created array in * an array creation expression. * * @return the array of expressions for the dimensions, or an empty array if the * <code>new</code> expression is not an array creation expression. */ @NotNull PsiExpression[] getArrayDimensions(); /** * Returns the expression specifying the initializer for the created array in * an array creation expression. * * @return the array initializer expression, or null if the <code>new</code> * expression is not an array creation expression or has no initializer. */ @Nullable PsiArrayInitializerExpression getArrayInitializer(); /** * Returns the reference element specifying the class the instance of which is created. * * @return class reference, or null if the expression is incomplete. */ @Nullable PsiJavaCodeReferenceElement getClassReference(); /** * Returns the anonymous class created by the <code>new</code> expression. * * @return the anonymous class, or null if the expression does not create an anonymous class. */ @Nullable PsiAnonymousClass getAnonymousClass(); /** * Returns the reference element specifying the class the instance of which is created, * or, if it's an anonymous class creation, corresponding base class reference. * * @return class reference, or null if the expression is incomplete. */ @Nullable PsiJavaCodeReferenceElement getClassOrAnonymousClassReference(); /** * For type-annotated array creation expressions returns subtype of getType(), * to which an annotation belongs. * * @param annotation annotation to find the type for. * @return annotated subtype or null, if annotation is incorrectly placed. */ @Nullable PsiType getOwner(@NotNull PsiAnnotation annotation); }