package com.nisovin.magicspells.util;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class ReflectionHelper<E> {
Map<String, Field> fields = new HashMap<String, Field>();
public ReflectionHelper(Class<? extends E> type, String... fields) {
for (String fieldName : fields) {
try {
Field field = type.getDeclaredField(fieldName);
field.setAccessible(true);
this.fields.put(fieldName, field);
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}
public int getInt(E object, String field) {
try {
return fields.get(field).getInt(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
return 0;
}
}
public void setInt(E object, String field, int val) {
try {
fields.get(field).setInt(object, val);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public byte getByte(E object, String field) {
try {
return fields.get(field).getByte(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
return 0;
}
}
public void setByte(E object, String field, byte val) {
try {
fields.get(field).setByte(object, val);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public String getString(E object, String field) {
try {
return (String)fields.get(field).get(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
public void setString(E object, String field, String val) {
try {
fields.get(field).set(object, val);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
public Object get(E object, String field) {
try {
return fields.get(field).get(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
return null;
}
}
public void set(E object, String field, Object val) {
try {
fields.get(field).set(object, val);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}