我有这堂课:
public class MyClass{
private Test test;
public class Test{
int num;
String color;
public Test(int num, String color){
this.num = num;
this.color = color;
}
}
public MyClass(){
}
public void setNum(int number){
test.num = number;
}
public void setColor(String color){
test.color = color;
}
public Test getTest(){
return test;
}
}
我正在设置另一个类的值,最后我调用方法getTest:
MyClass myclass = new MyClass();
.
.
.
Test test1 = myclass.getTest();
我想迭代对象test1来获取值。那可能吗?我是否必须在MyClass类中实现hasNext()方法?如果是,我该怎么做?
答案 0 :(得分:0)
您的问题已经asked并已回答。
基本思路 - 您需要使用反射API。例如,建筑test.getClass().getDeclaredFields();
注意:您不会以这种方式创建迭代器,但您将能够遍历类字段。那个稍微不同的东西。
答案 1 :(得分:0)
你想要这个吗?
public static void main(String[] args) {
MyClass myclass = new MyClass();
Test test1 = myclass.getTest();
//you need modify private Test test = new Test(1, "hahs");
//import java.lang.reflect.Field;
Field[] fields = test1.getClass().getDeclaredFields();
for (int j = 0; j < fields.length-1; j++) {
fields[j].setAccessible(true);
try {
System.out.println(fields[j].get(test1));
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//output
//1
//hahs
}
答案 2 :(得分:-1)
您必须使用反射才能遍历test
类的成员。您必须导入java.lang.reflect.*
并调用Class.forName("test1)
以获取Class对象,并调用Class对象的getDeclaredFields
方法以获取Field对象的数组。 Field
对象具有获取或设置字段值的get
和set
方法。