Following
method set an object property using reflection.
public static boolean set(Object object, String fieldName, Object fieldValue) {
Class<?> clazz = object.getClass();
while (clazz != null) {
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, fieldValue);
return true;
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
return false;
}
Find the
below working application.
Employee.java
package com.sample.app.model;
public class Employee {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
MainApp.java
package com.sample.app;
import java.lang.reflect.Field;
import com.sample.app.model.Employee;
public class MainApp {
public static boolean set(Object object, String fieldName, Object fieldValue) {
Class<?> clazz = object.getClass();
while (clazz != null) {
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
field.set(object, fieldValue);
return true;
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
return false;
}
@SuppressWarnings("unchecked")
public static <V> V get(Object object, String fieldName) {
Class<?> clazz = object.getClass();
while (clazz != null) {
try {
Field field = clazz.getDeclaredField(fieldName);
field.setAccessible(true);
return (V) field.get(object);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
return null;
}
public static void main(String args[]) throws InstantiationException, IllegalAccessException {
Object object = Employee.class.newInstance();
set(object, "id", 123);
set(object, "name", "Krishna");
System.out.println("id : " + get(object, "id"));
System.out.println("name : " + get(object, "name"));
}
}
Run
MainApp.java, you will see below messages in console.
id : 123
name :
Krishna
No comments:
Post a Comment