in java/fury-core/src/main/java/org/apache/fury/reflect/FieldAccessor.java [126:177]
public static FieldAccessor createAccessor(Field field) {
if (RecordUtils.isRecord(field.getDeclaringClass())) {
Object getter;
try {
Method getterMethod = field.getDeclaringClass().getDeclaredMethod(field.getName());
getter = Functions.makeGetterFunction(getterMethod);
} catch (NoSuchMethodException ex) {
throw new RuntimeException(ex);
}
if (getter instanceof Predicate) {
return new BooleanGetter(field, (Predicate) getter);
} else if (getter instanceof ToByteFunction) {
return new ByteGetter(field, (ToByteFunction) getter);
} else if (getter instanceof ToCharFunction) {
return new CharGetter(field, (ToCharFunction) getter);
} else if (getter instanceof ToShortFunction) {
return new ShortGetter(field, (ToShortFunction) getter);
} else if (getter instanceof ToIntFunction) {
return new IntGetter(field, (ToIntFunction) getter);
} else if (getter instanceof ToLongFunction) {
return new LongGetter(field, (ToLongFunction) getter);
} else if (getter instanceof ToFloatFunction) {
return new FloatGetter(field, (ToFloatFunction) getter);
} else if (getter instanceof ToDoubleFunction) {
return new DoubleGetter(field, (ToDoubleFunction) getter);
} else {
return new ObjectGetter(field, (Function) getter);
}
}
if (GraalvmSupport.isGraalBuildtime()) {
return new GeneratedAccessor(field);
}
if (field.getType() == boolean.class) {
return new BooleanAccessor(field);
} else if (field.getType() == byte.class) {
return new ByteAccessor(field);
} else if (field.getType() == char.class) {
return new CharAccessor(field);
} else if (field.getType() == short.class) {
return new ShortAccessor(field);
} else if (field.getType() == int.class) {
return new IntAccessor(field);
} else if (field.getType() == long.class) {
return new LongAccessor(field);
} else if (field.getType() == float.class) {
return new FloatAccessor(field);
} else if (field.getType() == double.class) {
return new DoubleAccessor(field);
} else {
return new ObjectAccessor(field);
}
}