package org.raidenjpa.reflection; import java.lang.invoke.MethodHandle; class BeanField { private final String name; private final Class<?> type; private final MethodHandle getter; private final MethodHandle setter; public BeanField(String name, Class<?> type, MethodHandle getter, MethodHandle setter) { this.name = name; this.type = type; this.getter = getter; this.setter = setter; } public void copyValue(Object original, Object clone) throws Throwable { Object value = this.getter.invoke(original); this.setter.invoke(clone, value); } public String getName() { return name; } public Class<?> getType() { return type; } public MethodHandle getGetter() { return getter; } public MethodHandle getSetter() { return setter; } }