-1

以下の6つのプロパティを持つPOJOがあります。リフレクションを使用して取得する必要があるフィールド名は5つだけです。

class Employee {

private Long id;
private String address;
private String phone;
private String firstName;
private String lastName;
private String designation;

//getters and setters

}

しかし、JavaリフレクションgetFields()を使用して、「phone」を除く5つのフィールド名のみを取得したいと思います。フィールド名を取得するにはどうすればよいですか?pojoからすべてのフィールド名ではなく、特定のフィールド名のみを取得することは可能ですか?

ありがとう!

4

2 に答える 2

0

いいえ、「を除くすべてのフィールドを取得する」ためのAPIはありません。

すべてのフィールドを取得し、不要なフィールド名をテストして、処理をスキップするだけです。

于 2012-10-17T10:29:43.090 に答える
0

フィールドの名前をgetField()メソッドに渡すことができます:-

Class<Employee> aClass = Employee.class
Field field = aClass.getField("address");  // For public fields

しかし、それはあなたをフェッチするだけですpublic fields

private fieldsを使用して、を取得できますgetDeclaredField("fieldName")

Field f = aClass.getDeclaredField("address"); //For all fields(Including private)

更新:-

フィールド名がない場合は、すべてのフィールドを反復処理し、Field.getName()メソッドを使用して手動でフィールド名を使用して配列をフィルタリングする必要があります。他に方法はありません:-

for(Field field: aClass.getDeclaredFields()) {
    if (!field.getName().equals("phone")) {
        // Process it
    }
}
于 2012-10-17T10:26:23.590 に答える