繁体   English   中英

Java抽象类型类编译时间检查

[英]Java abstract type Class compile time check

是否有可能在COMPILE时检查classType是否指向抽象类型? 运行时检查可以完成:

void foo(Class<? extends SubType> classType) {
    Modifier.isAbstract(classType.getModifiers()); 
}

foo(AbstractType.class);    // this should pass
foo(NotAbstractType.class); // this should fail

是否可以在编译时执行相同的操作?

您可以编写自己的@MustBeAbstract注释,然后编写一个注释处理器,以强制带有该注释的任何类都是抽象的。

请参见有关注释处理的问题: Java中的注释处理是什么?

据我所知,没有自动解决方案。

但是,如果您事先知道传递给方法foo的类的列表,则可以实现手动解决方案。

private ArrayList<Class> abstractTypes = new ArrayList<>();

void foo(Class<? extends SubType> classType) {
    boolean isAbstract = false;
    for(Class c: abstractTypes)
       if((classType.getName()).equals(c.getName()){
          isAbstract = true;
          break;
       }

    //Do something else...   
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM