Use:
Reflection is commonly used by programs which require the ability to examine or modify the runtime behavior of applications running in the Java virtual machine.
When :
It is necessary to handle different classes of objects that do not share the same interface.
- Example working with objects:
To take the names of fields witch are with null values, no matter the class of the object.
/**
* @param obj - N object from N class
* @return - List with Null Fields Names
*/
@Test
public static List<String> getNullFieldsNames(Object obj){
try{
List<String> allNames = new ArrayList<String>(0);
Class<?> classObj = obj.getClass();
Arrays.asList(classObj.getFields()).stream().forEach(field -> {
try {
if ( field.get(obj) == null ){
allNames.add(field.getName());
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
});
return allNames;
}catch (Exception e){
throw e;
}
}
- Example working with classes:
You can load classes, get the interfaces and a lot of others informations to make your implementation.
public class ClassMap{
private Map<String,String> map;
public void setMap(Map<String, String> map) {
this.map = map;
}
// Here we do the loading of the class and return
public Class getClass(String keyClass) throws Exception{
String v = map.get(keyClass);
if(v != null){
return Class.forName(v);
}else{
throw new RuntimeException("Not found with this key");
}
}
}
( Running ):
@Test
public void testClassMap(){
ClassMap classMap = new ClassMap();
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("ArrayList","java.util.ArrayList");
classMap.setMap(myMap);
try {
Class<?> myClass = classMap.getClass("ArrayList");
System.out.println("Name : " + myClass.getName());
Arrays.asList(myClass.getInterfaces()).stream().forEach(c-> System.out.println("Interface Name: " + c.getName()));
}catch (Exception r){
System.out.println(r);
}
}
Console:

It’s perfect time to make some plans for the future and it’s time to be happy.
I have read this post and if I could I desire to suggest you
some interesting things or suggestions. Maybe you can write next articles referring to this article.
I want to read even more things about it!
LikeLike