Java 反射-获取列表的大小<;SomeClass>;
帮助我处理反思。有一个Java 反射-获取列表的大小<;SomeClass>;,java,reflection,Java,Reflection,帮助我处理反思。有一个超类类和一个SomeClass: 公共类超类{ 私有列表类; 公共超类(){ this.listClass=新的ArrayList(); } //…getter和setter列表类 } 公共类SomeClass{} 如何使用反射来获取超类的listClass属性的大小?最好通过调用getListClass方法。如果您不知道它是一个列表或只是一个集合,可以使用迭代器 Class<?> objectClass = listClass.getClass(); if
超类
类和一个SomeClass
:
公共类超类{
私有列表类;
公共超类(){
this.listClass=新的ArrayList();
}
//…getter和setter列表类
}
公共类SomeClass{}
如何使用反射来获取
超类的listClass
属性的大小?最好通过调用getListClass
方法。如果您不知道它是一个列表或只是一个集合,可以使用迭代器
Class<?> objectClass = listClass.getClass();
if (Collection.class.isAssignableFrom(objectClass)) {
int size = ((Collection<?>) listClass).size();
}
如果可以,您只需拨打:
listClass.size();
既然您指出有getter和setter,那么为什么要使用反射呢?只需调用getListClass().size()
@Holger,因为我使用不同的类和不同的方法(我指的是不同的方法名称)。类方法调用在json配置文件中定义,例如应用程序体系结构。也许使用不同的应用程序体系结构,我可以使用getter
调用方法。谢谢,您的回答对我帮助很大。每个集合
都有一个size()
方法。因此,无需确保集合是一个列表
。此外,不需要使用Class objectClass=listClass.getClass()…Collection.class.isAssignableFrom(objectClass)
,作为Collection的普通listClass实例
已经完成了这项工作。但是由于listClass
的编译时类型已经是List
,甚至不需要这样做代码>。
listClass.size();