对象

时间:2015-11-24 11:22:52

标签: java java-ee

我有一个简单的问题,我们需要在Object中计算变量:

  

class cot {     int I;     int j;     int k;     }

我们需要对cot []上的每次迭代计算变量(3), 我们有size()可以用来获取Object的Array List的大小。 但是如何在Object上找到每个迭代的变量计数。

我们知道它是三个,但需要动态对象。

2 个答案:

答案 0 :(得分:1)

您可以使用Reflection API。这是一个例子:

import java.lang.reflect.Field;

public class cot{
    int I; int j; int k;
    String str;

    public int CountAllVariables(){
        // get reference to own class
        Class<?> clazz = this.getClass();
        // return amount of all fields
        return clazz.getDeclaredFields().length;
    }
    public int CountAllInteger(){
        int result = 0;
        // get reference to own class
        Class<?> clazz = this.getClass();
        // check all fields
        for ( Field field : clazz.getDeclaredFields() ) {
            // count if it is an int field
            if(int.class.isAssignableFrom(field.getType()))
                result++;
        }
        return result;
    }
}

现在您可以像这样使用它:

public static void main(String[] args){
    cot c = new cot();
    System.out.println( c.CountAllInteger());    // prints 3
    System.out.println( c.CountAllVariables());  // prints 4
}

答案 1 :(得分:0)

使用反射:MyClass.class.getFields().length

查看this了解详情。