/*
* Copyright 2013 Guidewire Software, Inc.
*/
package gw.lang.reflect.java;
import gw.internal.gosu.parser.IParameterizableType;
import gw.lang.parser.IFileRepositoryBasedType;
import gw.lang.parser.IHasInnerClass;
import gw.lang.reflect.ICanBeAnnotation;
import gw.lang.reflect.IEnhanceableType;
import gw.lang.reflect.IFileBasedType;
import gw.lang.reflect.gs.IGosuClass;
import gw.util.perf.objectsize.ObjectSize;
import java.util.List;
public interface IJavaType extends IJavaBackedType, IEnhanceableType, IHasInnerClass, IFileRepositoryBasedType, IFileBasedType, IParameterizableType, ICanBeAnnotation
{
/**
* Returns the java class for this java type
* @return the java class for this java type
* @deprecated Use only at runtime. At compile time use getBackingClassInfo().
*/
Class getIntrinsicClass();
IJavaClassInfo getBackingClassInfo();
/**
* @return An array of Java types reflecting all the classes and interfaces
* declared as members of the class represented by this Class object. These
* include public, protected, internal, and private classes and interfaces
* declared by the class, but excludes inherited classes and interfaces.
*/
List<IJavaType> getInnerClasses();
/**
* If this is a parameterized type, returns the generic type this type
* parameterizes. Otherwise, returns null.
*/
IJavaType getGenericType();
/**
* Returns the Gosu proxy for this class.
*/
IGosuClass getAdapterClass();
/**
* Creates the Gosu proxy type for this class.
* @return The newly created proxy type.
*/
IGosuClass createAdapterClass();
ObjectSize getRetainedMemory();
}