private static BeanAttributeGetter generateGetter(DynamicClassLoader dlc, Class<? extends AbstractBeanEntity> type, Method getter) { ClassNode node = new ClassNode(); node.name = String.format("%s$$AttrGet$%s", Type.getInternalName(type), getter.getName()); node.access = ACC_PUBLIC; node.version = V1_8; node.superName = Type.getInternalName(BeanAttributeGetter.class); node.methods.add(generateGetterConstructor()); node.methods.add(generateGetterMethod(type, getter)); if (Type.getReturnType(getter).equals(Type.LONG_TYPE)) { node.methods.add(generateLongGetterMethod(type, getter)); } else if (Type.getReturnType(getter).equals(Type.DOUBLE_TYPE)) { node.methods.add(generateDoubleGetterMethod(type, getter)); } Class<? extends BeanAttributeGetter> cls = dlc.defineClass(node).asSubclass(BeanAttributeGetter.class); try { return cls.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException("Cannot instantiate " + cls, e); } }
private static BeanAttributeGetter generateGetter(DynamicClassLoader dlc, Class<? extends AbstractBeanEntity> type, Method getter) { ClassNode node = new ClassNode(); node.name = String.format("%s$$AttrGet$%s", Type.getInternalName(type), getter.getName()); node.access = ACC_PUBLIC; node.version = V1_8; node.superName = Type.getInternalName(BeanAttributeGetter.class); node.methods.add(generateGetterConstructor()); node.methods.add(generateGetterMethod(type, getter)); if (Type.getReturnType(getter).equals(Type.LONG_TYPE)) { node.methods.add(generateLongGetterMethod(type, getter)); } else if (Type.getReturnType(getter).equals(Type.DOUBLE_TYPE)) { node.methods.add(generateDoubleGetterMethod(type, getter)); } Class<? extends BeanAttributeGetter> cls = dlc.defineClass(node).asSubclass(BeanAttributeGetter.class); try { return cls.newInstance(); } catch (InstantiationException | IllegalAccessException e) { throw new RuntimeException("Cannot instantiate " + cls, e); } }