2

在包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)和一些其他类型,其中NullTypeWildcardType

问题:据我了解null,表达式只是NullType接口的实现。我在哪里可以找到接口的实现NullType,即我想知道null表达式是什么?

在包sun.reflect.generics.reflectiveObjects中,我们有 class WildcardTypeImpl。此类私有字段:

private Type[] upperBounds;
private Type[] lowerBounds;

问题是否真的,如果我们使用带扩展的通配符,List<? extends Integer> ints;我们是否有上界将是 NullType 的实现,并且lowerBounds=Integer.

WildcardTypeinterface 不是从 interface 继承的ReferenceType。但是如果我们将通配符与 super 一起使用,List<? super Integer> ints我们可以将元素添加到 int 中。我不明白这一点。

4

0 回答 0