Java 8中如何獲取參數(shù)名稱的方法示例
前言
在Java 8之前的版本,代碼編譯為class文件后,方法參數(shù)的類型是固定的,但參數(shù)名稱卻丟失了,這和動態(tài)語言嚴重依賴參數(shù)名稱形成了鮮明對比?,F(xiàn)在,Java 8開始在class文件中保留參數(shù)名,給反射帶來了極大的便利。
示例:
public class GetRuntimeParameterName {
public void createUser(String name, int age, int version) {
//
}
public static void main(String[] args) throws Exception {
for (Method m : GetRuntimeParameterName.class.getMethods()) {
System.out.println("----------------------------------------");
System.out.println(" method: " + m.getName());
System.out.println(" return: " + m.getReturnType().getName());
for (Parameter p : m.getParameters()) {
System.out.println("parameter: " + p.getType().getName() + ", " + p.getName());
}
}
}
}
Method.getParameters為1.8新增方法,可以獲取參數(shù)信息,包括參數(shù)名稱。
上述代碼輸出的createUser參數(shù)如下:
method: createUser return: void parameter: java.lang.String, name parameter: int, age parameter: int, version
參數(shù)名稱被編譯進了class文件,替代了早期版本里無意義的arg0、arg1……
對于很多依賴參數(shù)名的框架,可進一步簡化代碼:
@Path("/groups/:groupid/:userid")
public User getUser(String groupid, String userid) {
...
}
沒有參數(shù)名的時代,得加上注解:
@Path("/groups/:groupid/:userid")
public User getUser(@Param("groupid") String groupid, @Param("userid") String userid) {
...
}
遺憾的是,保留參數(shù)名這一選項由編譯開關(guān)javac -parameters打開,默認是關(guān)閉的。
在Eclipse中,可以通過Compiler選項打開:

注意:此功能必須把代碼編譯成1.8版本的class才行。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關(guān)文章
Spring Boot 從靜態(tài)json文件中讀取數(shù)據(jù)所需字段
本文重點給大家介紹Spring Boot 從靜態(tài)json文件中讀取數(shù)據(jù)所需字段,感興趣的朋友跟隨腳本之家小編一起學習吧2018-05-05
自主配置數(shù)據(jù)源,mybatis/plus不打印sql日志問題
這篇文章主要介紹了自主配置數(shù)據(jù)源,mybatis/plus不打印sql日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題
這篇文章主要介紹了IntelliJ IDEA2020.2.2創(chuàng)建Servlet方法及404問題,這里小編使用的2020.2.2企業(yè)破解版本,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Mybatis執(zhí)行Update返回行數(shù)為負數(shù)的問題
這篇文章主要介紹了Mybatis執(zhí)行Update返回行數(shù)為負數(shù)的問題,具有很好的參考價值,希望大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
深入理解java動態(tài)代理的兩種實現(xiàn)方式(JDK/Cglib)
本篇文章主要介紹了java動態(tài)代理的兩種實現(xiàn)方式,詳細的介紹了JDK和Cglib的實現(xiàn)方法,具有一定的參考價值,有興趣的可以了解一下2017-04-04

