public class Chameleon extends Object
Chameleon 用于实现两个不同类型之间的转换。
在转换之前,需要学习训练两个模型间的相互转换。
原理:
通过 javassist 生成两个类型之间相互转化的字节码类,加载到JVM中,进行缓存;
在转换的时候,根据两个对象的Class,找到转化两者的动态实现类,调用生成的方法,完成转换。
| 限定符和类型 | 字段和说明 |
|---|---|
static boolean |
DEFAULT_ADAPTATION_STRUCTURE_MISMATCH
默认 不进行 结构不匹配的适配
|
static boolean |
DEFAULT_SKIP_NULL
默认不跳过空值
|
| 构造器和说明 |
|---|
Chameleon() |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
adapt(Class tClass,
Class rClass)
适应两个类型的相互转换
如果已经存在两个类型类型的相互转换将跳过,
如果类被修改过,需要调用`readapt`进行重新适应
|
void |
addEnvironmentAdaptSelector(EnvironmentAdaptSelector selector)
添加 环境适应 选择器
|
Environment |
getEnvironment(Class<?> sourceClass,
Class<?> destClass) |
List<EnvironmentAdaptSelector> |
getEnvironmentAdaptSelectors()
添加 环境适应 选择器
|
String |
getPackagePrefix() |
String |
getTmpdir() |
void |
readapt(Class tClass,
Class rClass) |
void |
ready()
配置了 环境适应 选择器 等信息后,
需要调用 ready 方法进行加载。
|
void |
setPackagePrefix(String packagePrefix) |
void |
setTmpdir(String tmpdir) |
<T,R> List<R> |
transform(Collection<T> source,
Class<R> destClass) |
<T,R> List<R> |
transform(Collection<T> source,
Class<R> destClass,
boolean adaptationStructureMismatch) |
<T,R> List<R> |
transform(Collection<T> source,
Class<R> destClass,
boolean adaptationStructureMismatch,
boolean skipNull) |
<T,R> R |
transform(T source,
Class<R> destClass) |
<T,R> R |
transform(T source,
Class<R> destClass,
boolean adaptationStructureMismatch) |
<T,R> R |
transform(T source,
Class<R> destClass,
boolean adaptationStructureMismatch,
boolean skipNull) |
<T,R> void |
transform(T source,
R dest) |
<T,R> void |
transform(T source,
R dest,
boolean adaptationStructureMismatch) |
<T,R> void |
transform(T source,
R dest,
boolean adaptationStructureMismatch,
boolean skipNull) |
public static final boolean DEFAULT_ADAPTATION_STRUCTURE_MISMATCH
public static final boolean DEFAULT_SKIP_NULL
public void adapt(Class tClass, Class rClass)
tClass - 源ClassrClass - 目标Classpublic void setTmpdir(String tmpdir)
public String getTmpdir()
public String getPackagePrefix()
public void setPackagePrefix(String packagePrefix)
public Environment getEnvironment(Class<?> sourceClass, Class<?> destClass)
public void addEnvironmentAdaptSelector(EnvironmentAdaptSelector selector)
selector - 环境适应选择器public List<EnvironmentAdaptSelector> getEnvironmentAdaptSelectors()
public void ready()
public <T,R> void transform(T source,
R dest)
public <T,R> void transform(T source,
R dest,
boolean adaptationStructureMismatch)
public <T,R> void transform(T source,
R dest,
boolean adaptationStructureMismatch,
boolean skipNull)
public <T,R> List<R> transform(Collection<T> source, Class<R> destClass)
public <T,R> List<R> transform(Collection<T> source, Class<R> destClass, boolean adaptationStructureMismatch)
public <T,R> List<R> transform(Collection<T> source, Class<R> destClass, boolean adaptationStructureMismatch, boolean skipNull)
public <T,R> R transform(T source,
Class<R> destClass)
public <T,R> R transform(T source,
Class<R> destClass,
boolean adaptationStructureMismatch)
public <T,R> R transform(T source,
Class<R> destClass,
boolean adaptationStructureMismatch,
boolean skipNull)
Copyright © 2021. All rights reserved.