如何确定在Java中对象上设置的字段数

sau*_*uce 3 java

不确定我是否可以这样做,但是,我说我有这个对象:

public class SomeObject
{
    private String field1;
    private String field2;
    ....

    //Blah Blah getters and setters for all fields
}
Run Code Online (Sandbox Code Playgroud)

我想知道这些字段中有多少是非空的.我的特定对象有40个字段,所以我真的不想让if块分别检查40个字段中的每个字段.我以为我能以某种方式用反射做到这一点?但真的不知道我在做什么.只需遍历所有字段并检查其值即可.

对于那里的人来说,我觉得这不是一件容易的事.

Jon*_*eet 6

是的,你可以用反射做到这一点:

SomeObject objectReference = ...; // The object you're interested in
Class clazz = SomeObject.class;
int nullCount = 0;
for (Field field : clazz.getDeclaredFields())
{
    field.setAccessible(true);
    if (field.get(objectReference) == null)
    {
        nullCount++;
    }
}
Run Code Online (Sandbox Code Playgroud)

(除了各种例外,权限等)

这感觉有点像黑客...说实话,这是一个有点奇怪的要求.你肯定需要所有40个字段,你是否需要将它们作为单独的字段而不是(比如说)数组?