显示出对别人的欢乐不屑一顾的样子,那是侮辱了别人——玛格丽特·尤瑟纳尔
这里采取了一种讨巧的方式避开了需求,实现了效果
思路是使用lombok
官方自带的delombok
进行处理:
见:https://gitee.com/dromara/hutool/issues/I56DED
delombok
官方文档:https://projectlombok.org/features/delombok
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| package com.ruben;
import cn.hutool.core.compiler.CompilerUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ReflectUtil; import cn.hutool.core.util.RuntimeUtil; import cn.hutool.core.util.StrUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;
class TestLombokCompile {
@Test void testCompile() throws ClassNotFoundException { String lombokJarPath = FileUtil.getAbsolutePath("lib/lombok-1.18.24.jar"); final ClassLoader classLoader = CompilerUtil.getCompiler(null) .addSource("pojo.User", RuntimeUtil.execForStr(StrUtil.format("java -jar {} delombok target/test-classes/pojo/User.java -p", lombokJarPath))) .compile(); final Class<?> clazz = classLoader.loadClass("pojo.User"); final Object obj = ReflectUtil.newInstance(clazz); ReflectUtil.invoke(obj, "setName", "VampireAchao"); Assertions.assertEquals("VampireAchao", ReflectUtil.invoke(obj, "getName")); }
}
|