Bean copy 解决 java17 反射问题

This commit is contained in:
卢春梦 2025-02-13 10:59:50 +08:00
parent 0510f27902
commit 47579f5137

View File

@ -57,20 +57,12 @@ public abstract class BaseBeanCopier {
} }
public static BaseBeanCopier create(Class source, Class target, boolean useConverter) { public static BaseBeanCopier create(Class source, Class target, boolean useConverter) {
return BaseBeanCopier.create(source, target, null, useConverter);
}
public static BaseBeanCopier create(Class source, Class target, ClassLoader classLoader, boolean useConverter) {
Object key = KEY_FACTORY.newInstance(source.getName(), target.getName(), useConverter); Object key = KEY_FACTORY.newInstance(source.getName(), target.getName(), useConverter);
Generator gen; Generator gen = new Generator(key);
if (classLoader == null) {
gen = new Generator(key);
} else {
gen = new Generator(key, classLoader);
}
gen.setSource(source); gen.setSource(source);
gen.setTarget(target); gen.setTarget(target);
gen.setUseConverter(useConverter); gen.setUseConverter(useConverter);
gen.setUseCache(true);
return gen.create(); return gen.create();
} }
@ -85,7 +77,6 @@ public abstract class BaseBeanCopier {
public static class Generator extends AbstractClassGenerator { public static class Generator extends AbstractClassGenerator {
private static final Source SOURCE = new Source(BEAN_NAME_PREFIX); private static final Source SOURCE = new Source(BEAN_NAME_PREFIX);
private final Object key; private final Object key;
private final ClassLoader classLoader;
private Class source; private Class source;
private Class target; private Class target;
private boolean useConverter; private boolean useConverter;
@ -94,13 +85,6 @@ public abstract class BaseBeanCopier {
Generator(Object key) { Generator(Object key) {
super(SOURCE); super(SOURCE);
this.key = key; this.key = key;
this.classLoader = null;
}
Generator(Object key, ClassLoader classLoader) {
super(SOURCE);
this.key = key;
this.classLoader = classLoader;
} }
public void setSource(Class source) { public void setSource(Class source) {
@ -123,6 +107,7 @@ public abstract class BaseBeanCopier {
@Override @Override
protected ClassLoader getDefaultClassLoader() { protected ClassLoader getDefaultClassLoader() {
// L.cm 保证 返回使用同一个 ClassLoader
return target.getClassLoader(); return target.getClassLoader();
} }