Java,获取类的所有变量值

时间:2013-12-12 13:43:51

标签: java variables for-loop arraylist

所以我有一个名为Test的课程:

public class Test{
    protected String name = "boy";
    protected String mainAttack = "one";
    protected String secAttack = "two";
    protected String mainType"three";
    protected String typeSpeak = "no spoken word in super class";

//Somehow put all the class variables in an Array of some sort
    String[] allStrings = ??(all class' strings);
//(and if you feel challenged, put in ArrayList without type declared.
//So I could put in, not only Strings, but also ints etc.)

    public void Tester(){
    //Somehow loop through array(list) and print values (for-loop?)
    }
}

如您所见,我想自动将所有类变量放在Array或ArrayList(或类似的东西)中。 接下来我希望能够遍历数组并打印/获取值。 最好使用增强型for循环。

5 个答案:

答案 0 :(得分:0)

如果你真的需要这样做,你需要使用反射。

然而,更好的方法是将值存储在Map(可能是HashMap)中,然后您可以轻松地从中查询/设置/等等。

答案 1 :(得分:0)

您可以使用MapHashmap来存储变量及其值,而不是ArrayArraylist

HashMap是一个将“键/值”存储为一对的对象。在本文中,我们将向您展示如何创建HashMap实例并迭代HashMap数据。

答案 2 :(得分:0)

为什么不使用HashMap作为值并迭代它?

Iterate through a HashMap

答案 3 :(得分:0)

这样做。

String threeEleves = "sky";
String sevenDwarves = "stone";
String nineMortal = "die";
String oneRing[] = new String[]  // <<< This
{
  threeElves,
  sevenDwarves,
  nineMortal
}

或者这样做

// in some class.
public void process(final String... varArgs)
{
    for (String current : varArgs)
    {
    }
}

String one = "noodles";
String two = "get";
String three = "in";
String four = "my";
String five = "belly";

process (one, two, three, four, five);

答案 4 :(得分:0)

正如其他人所说,不要这样做。但这是如何:

Class<?> cl = this.getClass();
List<Object> allObjects = new ArrayList<Object>();
for (java.lang.reflect.Field f: cl.getDeclaredFields())
{
    f.setAccessible(true);
    try
    {
        Object o = f.get(this);
        allObjects.add(o);
    }
    catch (Exception e)
    {
        ...
    }
}
for (Object o: allObjects)
    System.out.println(o);