import code
This commit is contained in:
59
src/main/java/ru/dmitriymx/reflection/ReflectionField.java
Normal file
59
src/main/java/ru/dmitriymx/reflection/ReflectionField.java
Normal 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() +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user