摘要
IntelliJ IDEA 2022.2 (Ultimate Edition)
# 一:场景
希望IDEA编译程序时能添加编译参数,如下代码如果没有添加 -parameters
,默认生成的 class 文件并不包含方法的形参名信息,简而言之,for循环的次数为0。
class Test {
public void replace(String str, List<String> list) {
}
}
public class MethodParameterTest {
public static void main(String[] args) throws Exception {
// 获取 String 的类
Class<Test> clazz = Test.class;
// 获取 String 类的带两个参数的 replace() 方法
Method replace = clazz.getMethod("replace", String.class, List.class);
// 获取指定方法的参数个数
System.out.println("replace 方法参数个数:" + replace.getParameterCount());
// 获取 replace 的所有参数信息
Parameter[] parameters = replace.getParameters();
int index = 1;
// 遍历所有参数
for (Parameter p : parameters) {
if (p.isNamePresent()) {
System.out.println("---第" + index++ + "个参数信息---");
System.out.println("参数名:" + p.getName());
System.out.println("形参类型:" + p.getType());
System.out.println("泛型类型:" + p.getParameterizedType());
}
}
}
}
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
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
# 二:IDEA
- 打开
File -> Settings
,或使用快捷键Ctrl+Alt+S
- 打开
Build, Execution, Deployment -> Compiler -> Java Compiler
,最下面点击"+"
- 选择需要添加参数的指定模块,并且添加编译参数
-parameters
- 重新运行代码
如果上面步骤做完,没有得到步骤四的结果
- 重新打开步骤一和步骤二的界面,查看是否添加成功;
- 把旧 Class 文件手动删除。
# 三:Maven
如果使用 Maven 的话,可以在 maven-compiler-plugin 插件中添加编译参数。
下面是完整的插件内容添加片段:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
重新运行代码
如果xml添加完毕,没有得到上面结果
- reload 该 Maven 项目;
- 执行clean命令,清除旧 Class 文件。