【发布时间】:2012-04-18 07:13:49
【问题描述】:
是否有可能在编译时检查 classType 是否指向抽象类型? 可以进行运行时检查:
void foo(Class<? extends SubType> classType) {
Modifier.isAbstract(classType.getModifiers());
}
foo(AbstractType.class); // this should pass
foo(NotAbstractType.class); // this should fail
如果在编译时也可以这样做?
【问题讨论】:
-
您能告诉我们您想在编译时检查类型的原因吗?我认为在运行时找到类型是大多数程序员担心的事情。 (因为可能有不同的实现有这么多特定的方法(而不是被覆盖的方法))
-
方法需要类型信息才能在私有成员中查找此类型的对象。该抽象子类类型应该定义一组可能的实现,而不是实现本身,因此编译时检查参数是否为抽象类型将有助于防止使用错误。
标签: java class time compilation abstract