泛型这个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
是干什么的吗
# 1 楼答案
它定义了一个变量
clazz
,它是扩展ContactAccessor
类的泛型类的Class
对象# 2 楼答案
这意味着您使用的类扩展了一个特殊的基类。这在Java中也称为泛型
# 3 楼答案
这是Java泛型的一个例子(更多here)。这意味着
clazz
变量的类型将扩展ContactAccessor
# 4 楼答案
这意味着您需要的
Class
类型未知(因此?
)。但是你知道它的一个特性——它是ContactAccessor
的一个子类。你需要找到那个特殊的类,你可以:Class.forName(className).asSubclass(ContactAccessor.class);
说,按它的类给我这个类,它是ContactAccessor
的一个子类# 5 楼答案
Class
用于反射<>
表示泛型类型?
是一个通用通配符。这意味着clazz
表示作为ContactAccessor
的后代的类的定义。如需进一步解释,请使用谷歌搜索generics
、wildcards
和reflection
# 6 楼答案
这意味着您有一个类,它是ContactAccessor类或该类或接口的子类
既然您已经有了
ContactAccessor.class
,我假设您有一个子类