java - 如何在java中使用反射查找集合的大小?

标签 java reflection collections

如何使用 java 中的反射找到 Collection(即 SetList)的大小?

我有类似下面示例的内容,并且想知道如何在使用反射时找到集合的大小。

编辑:

Class<?> clazz = node.getClass();
Field [] fields = clazz.getDeclaredFields();

for(Field field : fields) {
    System.out.println("declared fields:   "+ field.getType().getCanonicalName());

    //getting a generic type of a collection
    Type returntype = field.getGenericType();
    if (returntype instanceof ParameterizedType) {
        ParameterizedType type = (ParameterizedType) returntype;
        Type[] typeArguments = type.getActualTypeArguments();
        for(Type typeArgument : typeArguments) {
           Class<?> classType = (Class<?>) typeArgument;
           System.out.println("typeArgClass = " + classType.getCanonicalName());
        }
    }
}

最佳答案

假设node是集合实例。

int size;
try { 
  size = (Integer) node.getClass().getMethod("size").invoke(node);
} catch (Exception e) {
  e.printStackTrace();
}

但是,当您只能调用 node.size() 时,通过反射来执行此操作没有多大意义。

关于java - 如何在java中使用反射查找集合的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11128544/

相关文章:

c# - 在运行时替换 Property Setter 方法

java - 轻松访问集合中的条目 - 使用 where 条件

java - 从字节数组创建 8 位图像

java - 模块化应用程序堆栈中的虚拟数据和单元测试策略

java - 使用不同的变量循环?

java反射访问私有(private)字段抛出NoSuchFieldException即使该字段存在

data-visualization - java的时间轴创建库

c# - 反射:从父类获取静态方法

scala - 将Seq或List转换为collection.immutable.Queue

java - 如何从 Java 列表中删除所有重复的字符串?