1. 程式人生 > >JDK8獲取引數名稱(開啟javac -parameters)

JDK8獲取引數名稱(開啟javac -parameters)

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

/**
 * 使用–parameters引數編譯為class檔案後,保留引數名字。
 * @author fuhm3
 */
public class TestClass {

      public static void main(String[] args) throws ClassNotFoundException {
        Class classObject = Class.forName("com.ai.accm.saas.service.interfaces.IStaticResourceForSaasSV");
        Method[] methods = classObject.getDeclaredMethods();
         for(int i=0;i<methods.length;i++){
            final Parameter[] parameters = methods[i].getParameters();
            for(final Parameter p : parameters){
                System.out.println(p.isNamePresent()+"   "+p.getName() );
            }
        }
        System.out.println("-------------end-------------");
    }
}

保留引數名這一選項由編譯開關javac -parameters開啟,則:引數名稱被編譯進了class檔案。

保留引數名這一選項由編譯開關javac -parameters關閉,則:引數名稱是無意義的org0、org1...

但是,javac -parameters預設是關閉的,在eclipse中可以在 Preferences -- compiler -- store information about method parameters(usable via reflection) 開啟。

相關推薦

JDK8獲取引數名稱開啟javac -parameters

import java.lang.reflect.Method; import java.lang.reflect.Parameter; /**  * 使用–parameters引數編譯為class檔案後,保留引數名字。  * @author fuhm3  */ public

通過反射獲取方法的引數名稱JDK8以上支援

  方法的引數名,在很多時候我們是需要反射得到的。但是在java8之前,程式碼編譯為class檔案後,方法引數的型別是固定的,但引數名稱卻丟失了,這和動態語言嚴重依賴引數名稱形成了鮮明對比。(java是靜態語言,所以入參名稱叫什麼其實無所謂的)。   雖然名稱無所謂,但很多時候,我們需要此名稱來做更好的安排

Android如何獲取Wifi名稱SSID

其實很簡單,可以使用WifiManager和WifiInfo來獲取當前Wifi連線資訊 WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE); WifiInfo wifiInfo = wifiMa

Spring boot 通過AOP獲取引數名稱及引數值並對引數進行校驗

/** * 定義切入點為 帶有 NotEnableEmpty 註解的 */ @Pointcut("@annotation(cn.acsm.paddy.manage.anotation.NotEnableEmpty)") public void params() { }

AOP獲取引數名稱

由於專案中列印日誌的需要,研究了一下在aop中,獲取引數名稱的方法。1、jdk1,8中,比較簡單,直接通過joinPoint中的getSignature()方法即可獲取Signature signatu

SpringMVC的Restful中PUT無法獲取引數問題SSL設定

問題:使用SpringMVC的Restful風格構建服務時,呼叫PUT方法時無法獲取引數。 解決方法:在web.xml配置HttpPutFormContentFilter <!-- 隱藏的HttpMethod方法過濾器,表單提交中需要攜帶一個name=_method

PHP根據銀行卡號獲取銀行名稱根據Java更改而來

自己Java程式碼所得,勉強算是原創 <?php header("content-type:text/html;charset=utf-8"); /** * */ class GetBank { public static $ban

炒美股史考特(Scottrade)開戶準備及如何獲取免費交易最新2017版

申請 ast 一點 自己的 date 是我 服務 表示 再次 最新美股史考特(Scottrade)開戶及匯款攻略 (2017 年 6 月) 一 前言 二 開戶流程 三 激活賬戶 四 轉賬匯款 五 小結 一 前言:為什麽選擇史考特(Scottrad

js源碼 模仿 jquery的ajax的獲取數據get,post 的請求封裝

{} req turn eva syn 動作 取字符串 func ring function ajax(obj){ // 默認參數 var defaults = { type : ‘get‘, data : {}, url : ‘#‘, dataType : ‘text‘,

js獲取當前時間包含am pm

date 當前 ole nth inf color UNC function fun var fn = function(){ var now = new Date; var y = now.getFullYear(); var m = now.g

查看鎖信息開啟InnoDB監控

ring 共享 表名 統計信息 數據結構 status 輸出 rman this 當前mysql版本:5.6.21 一、背景 在mysql處理死鎖問題時,由於show engine innodb status輸出來的死鎖日誌無任務事務上下文,並不能很好地診斷相關事務

Nuxt.js開啟SSR渲染

orm 基本 round 標識 iss 啟動服務 all filter lin 為什麽要用Nuxt?   1.SEO   我們需要搜索引擎更多地抓取到我們的內容,更詳細地認識到我們的網頁結構,而不是僅對首頁或特定靜態頁進行索引.再直白點說,就是Vue.js原來是開發SPA

在go modules中使用replace替換無法直接獲取的packagegolang.org/x/...

報錯 href 操作 ast med tag 無法 獲取 技術分享 上一篇裏我們介紹了使用go get進行包管理。 不過因為某些未知原因,並不是所有的包都能直接用go get獲取到,這時我們就需要使用go modules的replace功能了。(當然大部分問題掛個梯子就能解

idea取消參數名稱形參名提示

tor set 技術分享 hint 提示 inf 排版 parameter ram idea取消參數名稱(形參名)提示 IDEA會自動顯示形式參數的變量名稱,這在一開始使用時感覺很方便,友好。有時候也會顯得排版很亂,下面是取消自動顯示形式參數名稱的方式 取消前是這個樣子。

Linux服務管理開啟關閉防火牆

1、firewalld的基本使用 啟動: systemctl start firewalld 關閉: systemctl stop firewalld 檢視狀態: systemctl status firewalld  開機禁用  : systemctl

Ionic更新APP後通過fileOpener開啟安裝完成後沒有提示視窗開啟或完成

Ionic更新APP後通過fileOpener開啟安裝完成後,沒有提示視窗(開啟或完成),比如你下載一個APP安裝成功後會給你一個反饋結果介面,接著你是要直接開啟APP呢就點選(開啟),你要是不想開啟呢就點選(完成),等你下次想用的時候開啟就行,就是這麼個反饋視窗。 處理方法: 找到plat

yarn資源排程引數配置記憶體,cpu

Hadoop  YARN同時支援記憶體和CPU兩種資源的排程(預設只支援記憶體,如果想進一步排程CPU,需要自己進行一些配置),本文將介紹YARN是如何對這些資源進行排程和隔離的。 在YARN中,資源管理由ResourceManager和NodeManager共同完成,其中,Resou

gradle無法獲取‘.pom’檔案Android Studio3.0

錯誤內容: Could not GET ‘https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.1.3/gradle-3.1.3.pom ‘. Received status code 400 f

MFC通過控制代碼後臺獲取截圖僅僅支援directx

作為一個癢癢鼠玩家,由於太多重複性操作,所以決定寫個小指令碼,但是又不會按鍵精靈,索性用的MFC,目前發現對opengl渲染方式截圖的話只會返回一個白麵,所以桌面版涼涼,只能安卓模擬器能用得到了。控制代碼查詢的話,可以用如下語句: HWND pWnd = ::FindWindowW(NULL, _

CentOS7.5安裝PPTP ×××開啟firewall防火牆

CentOS7.5安裝PPTP注意:部分內容轉自網路。1 準備一個CentOS7.5伺服器2 準備×××軟體及FIREWALLD開啟3 安裝PPPyum install -y ppp4 安裝PPTPD4.1 新增EPEL源:wget http://dl.fedoraproject.org/pub/epel/e