国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

Java 8中如何獲取參數(shù)名稱的方法示例

2019-11-26 13:13:57
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

在Java 8之前的版本,代碼編譯為class文件后,方法參數(shù)的類型是固定的,但參數(shù)名稱卻丟失了,這和動(dòng)態(tài)語(yǔ)言嚴(yán)重依賴參數(shù)名稱形成了鮮明對(duì)比。現(xiàn)在,Java 8開始在class文件中保留參數(shù)名,給反射帶來(lái)了極大的便利。

示例:

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: voidparameter: java.lang.String, nameparameter: int, ageparameter: int, version

參數(shù)名稱被編譯進(jìn)了class文件,替代了早期版本里無(wú)意義的arg0arg1……

對(duì)于很多依賴參數(shù)名的框架,可進(jìn)一步簡(jiǎn)化代碼:

@Path("/groups/:groupid/:userid")public User getUser(String groupid, String userid) { ...}

沒(méi)有參數(shù)名的時(shí)代,得加上注解:

@Path("/groups/:groupid/:userid")public User getUser(@Param("groupid") String groupid, @Param("userid") String userid) { ...}

遺憾的是,保留參數(shù)名這一選項(xiàng)由編譯開關(guān)javac -parameters打開,默認(rèn)是關(guān)閉的。

在Eclipse中,可以通過(guò)Compiler選項(xiàng)打開:

注意:此功能必須把代碼編譯成1.8版本的class才行。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 普兰县| 吕梁市| 长宁县| 浦东新区| 石林| 巫溪县| 清河县| 贵港市| 康乐县| 五寨县| 克什克腾旗| 青海省| 万州区| 社旗县| 琼结县| 合川市| 江西省| 金乡县| 汝南县| 平南县| 红原县| 二连浩特市| 荥经县| 彭阳县| 陇西县| 中西区| 宁蒗| 房山区| 南和县| 河北省| 禹州市| 桐城市| 绩溪县| 崇礼县| 阿城市| 五常市| 朝阳市| 宜君县| 巩留县| 西宁市| 六盘水市|