显示出对别人的欢乐不屑一顾的样子,那是侮辱了别人——玛格丽特·尤瑟纳尔

这里采取了一种讨巧的方式避开了需求,实现了效果

思路是使用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;

/**
* Test
*
* @author VampireAchao
* @since 2022/9/11
*/
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"));
}

}

输入图片说明