java - 通过反射获取所有内部类

标签 java

我有以下问题。我有这个漂亮的类,现在我想获取所有扩展该类的类(内部类)并用它填充“classList”。 (当然是自动的)

public abstract class CompoundReference {

    private static List<Class<? extends CompoundReference>> classList
            = new ArrayList<Class<? extends CompoundReference>>();


    @CompoundKey(gsType = User.class, dbType = UserDetailsMappings.class)
    public static class CUser extends CompoundReference {
    }

    @CompoundKey(gsType = Catalog.class, dbType = CatalogDetailsMappings.class)
    public static class CCatalog extends CompoundReference {
    }

    @CompoundKey(gsType = Product.class, dbType = ProductDetailsMappings.class)
    public static class CProduct extends CompoundReference {
    }

    @CompoundKey(gsType = Category.class)
    public static class CCategory extends CompoundReference {
    }

    @CompoundKey(gsType = Poll.class, dbType = PollDetailsMappings.class)
    public static class CPoll extends CompoundReference {
    }
    // much mroe inner classes

一些手动解决方案只是维护这样一个静态 block ,这是我不想做的事情。

  static {
        classList.addAll(Arrays.asList(CUser.class, CCatalog.class,
                CProduct.class, CCategory.class,
                CPoll.class, CComment.class, CWebPage.class,
                CReview.class, CPost.class, CMessage.class, CStory.class,CPicture.class));

    }

最佳答案

classList.addAll(Arrays.asList(CompoundReference.class.getDeclaredClasses()));

我应该注意到,从泛型的角度来看,这是不安全的,因为 getDeclaredClasses 方法可以返回所有类型的类,而不仅仅是封闭类的子类,它只是一个 Class<?> 的数组。 ,因此您可能需要根据用例的需要进行迭代和确认/转换。

关于java - 通过反射获取所有内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2899192/

相关文章:

java - Mockito 使用正则表达式验证是否使用正确的参数调用了方法

java 类级异常处理 - 在单个位置捕获所有方法的异常

java - 无法在Excel中插入数字格式的数据

java - 如何使用java中的rest api从共享点列表中获取文件内容

java - JTable 的自定义 DataModel 返回类型安全值

java - 在spring bean中处理xml配置文档

java - 实体上的 Blob 属性会影响查询性能吗?

java - build.gradle中的依赖是自动生成的吗?

java - 内角的余弦定律

java - 在 JNI 中正确使用 DeleteLocalRef