JGenerable
JDefinedClass
, JNullType
, JTypeVar
public abstract class JClass extends JType
To be exact, this object represents an "use" of a reference type,
not necessarily a declaration of it, which is modeled as JDefinedClass
.
Modifier and Type | Field | Description |
---|---|---|
protected static JTypeVar[] |
EMPTY_ARRAY |
Sometimes useful reusable empty array.
|
Modifier | Constructor | Description |
---|---|---|
protected |
JClass(JCodeModel _owner) |
Modifier and Type | Method | Description |
---|---|---|
abstract JClass |
_extends() |
Gets the super class of this class.
|
abstract java.util.Iterator<JClass> |
_implements() |
Iterates all super interfaces directly implemented by
this class/interface.
|
abstract JPackage |
_package() |
Gets the package to which this class belongs.
|
JClass |
array() |
Create an array type of this type.
|
JClass |
boxify() |
Deprecated.
calling this method from
JClass
would be meaningless, since it's always guaranteed to
return this . |
JExpression |
dotclass() |
|
JClass |
erasure() |
Returns the erasure of this type.
|
void |
generate(JFormatter f) |
|
JClass |
getBaseClass(JClass baseType) |
Gets the parameterization of the given base type.
|
JClass |
getBaseClass(java.lang.Class<?> baseType) |
|
JPrimitiveType |
getPrimitiveType() |
If this class represents one of the wrapper classes
defined in the java.lang package, return the corresponding
primitive type.
|
java.util.List<JClass> |
getTypeParameters() |
If this class is parameterized, return the type parameter of the given index.
|
abstract boolean |
isAbstract() |
Checks if this class is an abstract class.
|
boolean |
isAssignableFrom(JClass derived) |
Checks the relationship between two classes.
|
abstract boolean |
isInterface() |
Checks if this object represents an interface.
|
boolean |
isParameterized() |
Returns true if this class is a parameterized class.
|
abstract java.lang.String |
name() |
Gets the name of this class.
|
JClass |
narrow(JClass clazz) |
"Narrows" a generic class to a concrete class by specifying
a type argument.
|
JClass |
narrow(JClass... clazz) |
|
JClass |
narrow(JType type) |
|
JClass |
narrow(java.lang.Class<?> clazz) |
"Narrows" a generic class to a concrete class by specifying
a type argument.
|
JClass |
narrow(java.lang.Class<?>... clazz) |
|
JClass |
narrow(java.util.List<? extends JClass> clazz) |
|
JClass |
outer() |
Returns the class in which this class is nested, or
null if
this is a top-level class. |
JCodeModel |
owner() |
Gets the JCodeModel object to which this object belongs.
|
JInvocation |
staticInvoke(JMethod method) |
Generates a static method invocation.
|
JInvocation |
staticInvoke(java.lang.String method) |
Generates a static method invocation.
|
JFieldRef |
staticRef(JVar field) |
Static field reference.
|
JFieldRef |
staticRef(java.lang.String field) |
Static field reference.
|
protected abstract JClass |
substituteParams(JTypeVar[] variables,
java.util.List<JClass> bindings) |
Substitutes the type variables with their actual arguments.
|
java.lang.String |
toString() |
|
JTypeVar[] |
typeParams() |
Iterates all the type parameters of this class/interface.
|
JType |
unboxify() |
If this class is a wrapper type for a primitive, return the primitive type.
|
JClass |
wildcard() |
Create "? extends T" from T.
|
binaryName, compareTo, elementType, fullName, isArray, isPrimitive, isReference, parse
protected static final JTypeVar[] EMPTY_ARRAY
protected JClass(JCodeModel _owner)
public abstract java.lang.String name()
public abstract JPackage _package()
public JClass outer()
null
if
this is a top-level class.public final JCodeModel owner()
public abstract JClass _extends()
public abstract java.util.Iterator<JClass> _implements()
JClass
objects that represents those interfaces
implemented by this object.public JTypeVar[] typeParams()
public abstract boolean isInterface()
public abstract boolean isAbstract()
public JPrimitiveType getPrimitiveType()
public JClass boxify()
JClass
would be meaningless, since it's always guaranteed to
return this
.JType
this
.
For example, for "int", this method returns "java.lang.Integer".
public JType unboxify()
JType
this
.
For example, for "java.lang.Integer", this method returns "int".
public JClass erasure()
JType
public final boolean isAssignableFrom(JClass derived)
This method works in the same way as Class.isAssignableFrom(Class)
works. For example, baseClass.isAssignableFrom(derivedClass)==true.
public final JClass getBaseClass(JClass baseType)
For example, given the following
interface Foo<T> extends List<List<T>> {}
interface Bar extends Foo<String> {}
This method works like this:
getBaseClass( Bar, List ) = List<List<String>
getBaseClass( Bar, Foo ) = Foo<String>
getBaseClass( Foo<? extends Number>, Collection ) = Collection<List<? extends Number>>
getBaseClass( ArrayList<? extends BigInteger>, List ) = List<? extends BigInteger>
baseType
- The class whose parameterization we are interested in.baseType
in this
type.
or null if the type is not assignable to the base type.public final JClass getBaseClass(java.lang.Class<?> baseType)
public JClass array()
JType
public JClass narrow(java.lang.Class<?> clazz)
.narrow(X)
builds Set<X>
from Set
.
public JClass narrow(java.lang.Class<?>... clazz)
public JClass narrow(JClass clazz)
.narrow(X)
builds Set<X>
from Set
.
public java.util.List<JClass> getTypeParameters()
public final boolean isParameterized()
public final JClass wildcard()
protected abstract JClass substituteParams(JTypeVar[] variables, java.util.List<JClass> bindings)
For example, when this class is Map<String,Map<V>>
,
(where V then doing
substituteParams( V, Integer ) returns a JClass
for Map<String,Map<Integer>>
.
This method needs to work recursively.
public final JExpression dotclass()
public final JInvocation staticInvoke(JMethod method)
public final JInvocation staticInvoke(java.lang.String method)
public final JFieldRef staticRef(java.lang.String field)
public void generate(JFormatter f)
Copyright © 2018 Oracle Corporation. All rights reserved.