有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

泛型这个Java语法意味着什么?(`Class<?扩展ContactAccessor>clazz`)

我已经开发了大约1个月的安卓应用程序,现在我已经非常熟悉Java语法,但今天我偶然发现了这段代码:

try {
    Class<? extends ContactAccessor> clazz =
                      Class.forName(className).asSubclass(ContactAccessor.class);
    sInstance = clazz.newInstance();
} catch (Exception e) {
    throw new IllegalStateException(e);
}

谁能给我解释一下这个Class<? extends ContactAccessor> clazz是干什么的吗


共 (6) 个答案

  1. # 1 楼答案

    它定义了一个变量clazz,它是扩展ContactAccessor类的泛型类的Class对象

  2. # 2 楼答案

    这意味着您使用的类扩展了一个特殊的基类。这在Java中也称为泛型

  3. # 3 楼答案

    这是Java泛型的一个例子(更多here)。这意味着clazz变量的类型将扩展ContactAccessor

  4. # 4 楼答案

    这意味着您需要的Class类型未知(因此?)。但是你知道它的一个特性——它是ContactAccessor的一个子类。你需要找到那个特殊的类,你可以:Class.forName(className).asSubclass(ContactAccessor.class);说,按它的类给我这个类,它是ContactAccessor的一个子类

  5. # 5 楼答案

    Class用于反射<>表示泛型类型?是一个通用通配符。这意味着clazz表示作为ContactAccessor的后代的类的定义。如需进一步解释,请使用谷歌搜索genericswildcardsreflection

  6. # 6 楼答案

    这意味着您有一个类,它是ContactAccessor类或该类或接口的子类

    既然您已经有了ContactAccessor.class,我假设您有一个子类