在包javax.lang.model.type
中,我们有基本的 enum TypeKind
。
public enum TypeKind {
BOOLEAN,
BYTE,
SHORT,
INT,
LONG,
CHAR,
FLOAT,
DOUBLE,
VOID,
NONE,
NULL,
ARRAY,
DECLARED,
ERROR,
TYPEVAR,
WILDCARD,
PACKAGE,
EXECUTABLE,
OTHER,
UNION;
public boolean More ...isPrimitive() {
switch(this) {
case BOOLEAN:
case BYTE:
case SHORT:
case INT:
case LONG:
case CHAR:
case FLOAT:
case DOUBLE:
return true;
default:
return false;
}
}
}
接口javax.lang.model.type.ReferenceType
继承自javax.lang.model.type.MirrorType
. javax.lang.model.type.NullType
继承自javax.lang.model.type.ReferenceType
. 因此,基本上,我们有一组类型,其中八个是原始类型,两个伪类型(VOID
, NONE
)和一些其他类型,其中NullType
和WildcardType
。
问题:据我了解null
,表达式只是NullType
接口的实现。我在哪里可以找到接口的实现NullType
,即我想知道null
表达式是什么?
在包sun.reflect.generics.reflectiveObjects
中,我们有 class WildcardTypeImpl
。此类私有字段:
private Type[] upperBounds;
private Type[] lowerBounds;
问题是否真的,如果我们使用带扩展的通配符,List<? extends Integer> ints;
我们是否有上界将是 NullType 的实现,并且lowerBounds=Integer
.
WildcardType
interface 不是从 interface 继承的ReferenceType
。但是如果我们将通配符与 super 一起使用,List<? super Integer> ints
我们可以将元素添加到 int 中。我不明白这一点。