有 Java 编程相关的问题?

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

java如何转换类<?>上课?扩展X>?

我有一个类A另存为Class<?>,我知道它是B的一个子类,必须将其转换为a Class<? extends B>。但我的代码没有编译:

Class<?> c = ...
if (c.newInstance() instanceof B) { // true
    Class<? extends B> = (B) c; // does not compile
}

在我的研究中,我发现了通配符捕获,但我不知道如何使用这种方法,因为B是一个abstract类。 那么我该如何解决这个问题呢


共 (2) 个答案

  1. # 1 楼答案

    只需将其转换为右侧类型:

    Class<? extends B> b = (Class<? extends B>) c; 
    

    首先,左边的类型是Class<? extends B>,而您在cast中使用的类型是B一些扩展B的类与B不同和B的em>等级不一样

    然后:还有一个语法错误,因为您也省略了一个变量名

  2. # 2 楼答案

    java.lang.Class有一个方法可以做到这一点:^{}

    有了它,您可以将上述代码编写为:

    if (c.isAssignableFrom​(B.class)) {
        Class<? extends B> b = c.asSubclass(B.class);
    }