blob: d8fa9a116251d65c2399a086a82ff4afe863664d [file] [log] [blame]
/*
* 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);
}