001 /* 002 * Copyright 2010-2015 JetBrains s.r.o. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.jetbrains.kotlin.load.java.structure; 018 019 import org.jetbrains.annotations.NotNull; 020 import org.jetbrains.annotations.Nullable; 021 import org.jetbrains.kotlin.name.FqName; 022 023 import java.util.Collection; 024 025 public interface JavaClass extends JavaClassifier, JavaTypeParameterListOwner, JavaModifierListOwner, JavaAnnotationOwner { 026 @NotNull 027 Collection<JavaClass> getInnerClasses(); 028 029 @Nullable 030 FqName getFqName(); 031 032 boolean isInterface(); 033 034 boolean isAnnotationType(); 035 036 boolean isEnum(); 037 038 @Nullable 039 JavaClass getOuterClass(); 040 041 @NotNull 042 Collection<JavaClassifierType> getSupertypes(); 043 044 @NotNull 045 Collection<JavaMethod> getMethods(); 046 047 @NotNull 048 Collection<JavaField> getFields(); 049 050 @NotNull 051 Collection<JavaConstructor> getConstructors(); 052 053 @NotNull 054 JavaClassifierType getDefaultType(); 055 056 @NotNull 057 OriginKind getOriginKind(); 058 059 @NotNull 060 JavaType createImmediateType(@NotNull JavaTypeSubstitutor substitutor); 061 062 enum OriginKind { 063 COMPILED, 064 SOURCE, 065 KOTLIN_LIGHT_CLASS 066 } 067 }