package com.cardshifter.serialization;
import com.cardshifter.api.serial.ReflectionInterface;
import com.cardshifter.api.serial.ReflField;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
/**
* Created by Simon on 4/25/2015.
*/
public class NormalReflection implements ReflectionInterface {
@Override
public Object create(Class<?> type) throws Exception {
Constructor<?> constructor = type.getDeclaredConstructor();
constructor.setAccessible(true);
return constructor.newInstance();
}
@Override
public ReflField[] getFields(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields();
ReflField[] result = new ReflField[fields.length];
for (int i = 0; i < result.length; i++) {
result[i] = new JavaReflectField(fields[i]);
}
return result;
}
@Override
public boolean isEnum(Class<?> type) {
return Enum.class.isAssignableFrom(type);
}
@Override
public Class<?> forName(String clazzName) throws Exception {
return Class.forName(clazzName);
}
}