split PsiMember and JvmMember, link them via PsiJvmMember interface
[idea/community.git] / java / java-psi-api / src / com / intellij / psi / PsiTypeParameterListOwner.java
1 // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.psi;
3
4 import com.intellij.lang.jvm.JvmTypeParametersOwner;
5 import org.jetbrains.annotations.NotNull;
6 import org.jetbrains.annotations.Nullable;
7
8 /**
9  * Represents a PSI element (class, interface, method or constructor) which can own a type
10  * parameter list.
11  *
12  * @author dsl
13  */
14 public interface PsiTypeParameterListOwner extends PsiJvmMember, JvmTypeParametersOwner {
15   /**
16    * Checks if the element has any type parameters.
17    *
18    * @return true if the element has type parameters, false otherwise
19    */
20   boolean hasTypeParameters();
21
22   /**
23    * Returns the type parameter list for the element.
24    *
25    * @return the type parameter list, or null if the element has no type parameters.
26    */
27   @Nullable
28   PsiTypeParameterList getTypeParameterList();
29
30   /**
31    * Returns the array of type parameters for the element.
32    *
33    * @return the array of type parameters, or an empty array if the element has no type parameters.
34    */
35   @NotNull
36   @Override
37   PsiTypeParameter[] getTypeParameters();
38 }