0

import code

This commit is contained in:
2020-04-15 13:08:06 +03:00
commit 094318904c
14 changed files with 682 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
package ru.dmitriymx.reflection;
import lombok.EqualsAndHashCode;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@EqualsAndHashCode
public class ReflectionField {
private final Object object;
private final Class clazz;
private final Field field;
public ReflectionField(Object object, Field field) {
this.object = object;
this.clazz = object.getClass();
this.field = field;
}
public ReflectionField(Class clazz, Field field) {
this.object = null;
this.clazz = clazz;
this.field = field;
}
public String name() {
return field.getName();
}
public ReflectionObject get() {
try {
if (!field.isAccessible()) {
field.setAccessible(true);
}
return new ReflectionObject(field.get(object));
} catch (IllegalAccessException e) {
throw new ReflectionException(e);
}
}
public <T> T get(Class<T> clazz) {
return get().getOriginalObject(clazz);
}
public boolean isStatic() {
return Modifier.isStatic(field.getModifiers());
}
@Override
public String toString() {
return "ReflectionField{" +
"objectClass=" + clazz +
", fieldName=" + field.getName() +
", isStatic=" + isStatic() +
'}';
}
}