log 获取参数名和值
时间: 2023-08-12 07:07:10 浏览: 53
回答: 要在Java中获取方法参数的名称和值,可以使用不同的方法。在Java8之前,方法参数的名称会丢失,只能通过arg0、arg1等来引用参数。但是从Java8开始,可以在class文件中保留参数名。一种方法是使用JoinPoint对象的getArgs()方法来获取参数值,使用getSignature()方法来获取方法签名,然后使用getParameterNames()方法来获取参数名。例如:
```
public void test(JoinPoint joinPoint) {
Object\[\] args = joinPoint.getArgs(); // 参数值
String\[\] argNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames(); // 参数名
}
```
另一种方法是在编译Java文件时,使用特定的选项来保留参数名称。在Eclipse中,可以在Preferences->Java->Compiler下勾选"Store information about method parameters"选项。这样在使用Eclipse编译Java文件时,参数名称会被编译到class文件中。\[1\]\[2\]
如果使用Maven编译Java文件,可以在pom.xml文件中增加compilerArgs参数来保留参数名称。例如:
```
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven_compiler_plugin_version}</version>
<configuration>
<source>${java_source_version}</source>
<target>${java_target_version}</target>
<encoding>${file_encoding}</encoding>
<compilerArgs>
<arg>-parameters</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins>
```
这样在使用Maven编译Java文件时,参数名称也会被保留在class文件中。\[3\]
#### 引用[.reference_title]
- *1* *2* *3* [SpringAOP中通过JoinPoint获取参数名和值](https://blog.csdn.net/u013041642/article/details/81209404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]