Get Declared Field
Apache Commons Lang 3.0 is a java library with lot of utilities and reusable components.
This requires the library commons-lang3-3.0.1.jar to be in classpath.
The following example shows using FieldUtils.getDeclaredField() API.
It returns the accessible Field by name by considering only the specified class (no super classes).
package com.bethecoder.tutorials.commons_lang.common;
public class Student extends Person {
private static String DEFAULT_NAME = "Unknown" ;
private String name;
private int age;
private String hobby;
public Student () {
}
public Student ( String name, int age, String hobby ) {
super () ;
this .name = name;
this .age = age;
this .hobby = hobby;
}
public String getName () {
return name;
}
public void setName ( String name ) {
this .name = name;
}
public int getAge () {
return age;
}
public void setAge ( int age ) {
this .age = age;
}
public String getHobby () {
return hobby;
}
public void setHobby ( String hobby ) {
this .hobby = hobby;
}
public String toString () {
return "Student[name = " + name + ", age = " + age + ", hobby = " + hobby + "]" ;
}
}
package com.bethecoder.tutorials.commons_lang.common;
public class Person {
private double height;
private double weight;
public double getHeight () {
return height;
}
public void setHeight ( double height ) {
this .height = height;
}
public double getWeight () {
return weight;
}
public void setWeight ( double weight ) {
this .weight = weight;
}
}
package com.bethecoder.tutorials.commons_lang.tests.reflections;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.lang3.reflect.FieldUtils;
import com.bethecoder.tutorials.commons_lang.common.Student;
public class GetDeclaredFieldTest {
/**
* @param args
*/
public static void main ( String [] args ) throws NoSuchMethodException,
IllegalAccessException, InvocationTargetException,
InstantiationException {
Field field = FieldUtils.getDeclaredField ( Student.class, "name" , true ) ;
System.out.println ( field ) ;
field = FieldUtils.getDeclaredField ( Student.class, "age" , true ) ;
System.out.println ( field ) ;
field = FieldUtils.getDeclaredField ( Student.class, "height" , true ) ;
System.out.println ( field ) ;
}
}
It gives the following output,
private java.lang.String com.bethecoder.tutorials.commons_lang.common.Student.name
private int com.bethecoder.tutorials.commons_lang.common.Student.age
null