java在不创建新实例的情况下遍历数组字段
我正试图编写一个方法来获取对象,并对对象的字段进行一些逻辑处理 我的方法如下所示:java在不创建新实例的情况下遍历数组字段,java,reflection,Java,Reflection,我正试图编写一个方法来获取对象,并对对象的字段进行一些逻辑处理 我的方法如下所示: public void exampleCast(Object obj) { Field[] fields = obj.getClass().getFields(); for (Field field : fields) { if (field.getClass().isArray()) { /* HO
public void exampleCast(Object obj) {
Field[] fields = obj.getClass().getFields();
for (Field field : fields) {
if (field.getClass().isArray()) {
/*
HOW CAN I GO OVER THE ARRAY FIELDS , WITHOUT CREATING NEW INSATCNE ?
SOMETHING LIKE:
for (int i = 0; i < array.length; i++) {
array[i] ...
}
*/
} else {
...
...
}
}
}
并调用我的方法:
TBD1 tbd1 = new TBD1();
exampleCast(tbd1);
在我的方法中,我不知道如何在不创建新实例的情况下获得数组值(使用“newInstance”方法)
可能吗?(请参阅我在示例中写的注释)
我读了这两个网站:
但是我没有得到我想要的
请帮忙:)
谢谢如果我理解你的问题,你可以使用
if (field.getType().isArray()) { // <-- should be getType(), thx @Pshemo
Object array = field.get(obj);
int len = Array.getLength(array);
for (int i = 0; i < len; i++) {
Object v = Array.get(array, i);
System.out.println(v);
}
} // ...
if(field.getType().isArray()){//它不应该是getType
而不是getClass
?如果我没弄错的话,field
实例调用的getClass
将返回我们field.class
,它肯定不是数组。我们要做的是检查变量的类型是否是数组。
if (field.getType().isArray()) { // <-- should be getType(), thx @Pshemo
Object array = field.get(obj);
int len = Array.getLength(array);
for (int i = 0; i < len; i++) {
Object v = Array.get(array, i);
System.out.println(v);
}
} // ...