检查泛型类是否为抽象类的实例

问题描述 投票:-3回答:1
public static void main(String[] args)
{
    Class b = B.class;
    System.out.println(b.isAssignableFrom(A.class));
}
static abstract class A{

}
static class B extends A{

}

输出:

false

输出为false我尝试使用instanceof并且它有编译错误请帮忙

编辑解决了你需要比较的基类可以从扩展的漂亮的傻瓜中分配你不能使用的是类的instanceof abstract

java class abstract instanceof
1个回答
2
投票

你的班级BA延伸,而不是相反。想象一个更具体的例子

public abstract class Animal { ... }
public class Dog extends Animal { ... }
public class Cat extends Animal { ... }

B.class.isAssignableFrom(A.class)的结果是正确的false,因为你问

我可以将AnimalA)指定给DogB)吗?

这是不可能的,因为可能有不同的动物,如Cat

Animal animal = new Cat();
Dog dog = (Dog) animal; // Will not work since animal is a cat

有关更多详细信息,请参阅该方法的documentation

确定此Class对象表示的类或接口是否与指定的Class参数表示的类或接口相同,或者是它们的超类或超接口。如果是这样,它会返回true;否则它返回false。如果此Class对象表示基本类型,则如果指定的Class参数恰好是此Class对象,则此方法返回true;否则它返回false

具体来说,此方法测试是否可以通过标识转换或扩展引用转换将指定的Class参数表示的类型转换为此Class对象表示的类型。有关详细信息,请参阅Java语言规范,部分5.1.15.1.4

© www.soinside.com 2019 - 2024. All rights reserved.