導航:首頁 > 編程語言 > java獲取方法的名稱

java獲取方法的名稱

發布時間:2022-07-01 06:02:59

『壹』 java中如何獲取方法名字

import java.lang.reflect.Method;

public class Users {
public void print() {
}

public void getName() {}

public static void main(String[] args) {
Class c = Users.class;
Method m[] = c.getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
System.out.println("方法名" + m[i].getName());
}
}

}

『貳』 java如何動態獲取方法名

public class Test {
public static void main(String[] args)throws Exception {
// TODO Auto-generated method stub
A a=new A();
String i="setB";

Method cc=a.getClass().getMethod(i, String.class);//獲取方法
//String.class如果沒有就是new Class[0]
System.out.println(cc.getName());
cc.invoke(a, "aa");
//調用方法
System.out.println(a.getB());

}
}

class A{
private int a=0;
private String b="abc";
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}

}

『叄』 JAVA可以在方法裡面調出類信息,怎麼調出方法的信息,比如獲得方法的方法名

你如果可以獲得類的星系,可以根據java的反射機制找到方法的信息。
Class clazz就是你獲得的類,那麼clazz.getMethods()可以獲得所有的方法。
具體的查閱相關的 api

『肆』 如何在java方法中獲得當前方法的名稱

在java方法中獲得當前方法的名稱方法:

一、獲得當前類名:

Java代碼

『伍』 java怎麼獲取方法參數名

在java中,可以通過反射獲取到類、欄位、方法簽名等相關的信息,像方法名、返回值類型、參數類型、泛型類型參數等,但是不能夠獲取方法的參數名。在實際開發場景中,有時需要根據方法的參數名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable註解,如果不指定相應的value屬性,默認就是使用方法的參數名做為HTTP請求的參數名,它是怎麼做到的呢?
在這樣情況下,有兩種方法獲取方法來解決這種需求,第一種方法是使用註解,在註解中指定對應應的參數名稱,在需要使用參數名稱時,獲取註解中相應的值即可。第二種方法是從位元組碼中獲取方法的參數名,但是這有一個限制,只有在編譯時使用了-g或-g:vars參數生成了調試信息,class文件中才會生成方法參數名信息(在本地變數表LocalVariableTable中),而使用-g:none方式編譯的class文件中是沒有方法參數名信息的。所以要想完全不依賴class文件的編譯模式,就不能使用這種方式。

『陸』 java怎麼獲取src目錄下所有的包名,類名,方法名 以及通過一個類名獲得該類下的所有方法名

可以使用以下代碼來獲取src目錄下所有的包名,類名,方法名 以及通過一個類名獲得該類下的所有方法名。
import java.io.File;
import java.lang.reflect.Method;
public class LoopApp {
public static void main(String[] args) throws Exception {
String packageName = "";
File root = new File(System.getProperty("user.dir") + "\\src");
loop(root, packageName);
}
public static void loop(File folder, String packageName) throws Exception {
File[] files = folder.listFiles();
for (int fileIndex = 0; fileIndex < files.length; fileIndex++) {
File file = files[fileIndex];
if (file.isDirectory()) {
loop(file, packageName + file.getName() + ".");
} else {
listMethodNames(file.getName(), packageName);
}
}
}
public static void listMethodNames(String filename, String packageName) {
try {
String name = filename.substring(0, filename.length() - 5);
Object obj = Class.forName(packageName + name);
Method[] methods = obj.getClass().getDeclaredMethods();
System.out.println(filename);
for (int i = 0; i < methods.length; i++) {
System.out.println("\t" + methods[i].getName());
}
} catch (Exception e) {
System.out.println("exception = " + e.getLocalizedMessage());
}
}
}

『柒』 java 在字元串中截取方法名

importjava.util.HashMap;
importjava.util.Map;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;


publicclassParseString{

privatestaticfinalStringPARAM_KEY="!";

publicstaticvoidmain(String[]args)throwsException{
//待解析字元串
Stringmethod="methodName(methodName2(methodName4(2,3,4),2),methodName3(),strName)";

//這句很重要,先刪除字元串中所有的空格,後面的正則中不再需要考慮空字元問題
method=method.replaceAll("\s+","");

//輸出結果
for(Map.Entry<String,Integer>entry:parseMethod(method).entrySet()){
System.out.println(entry.getKey()+"---"+entry.getValue());
}
}

privatestaticMap<String,Integer>parseMethod(Stringmethod){
Map<String,Integer>ret=newHashMap<>();

Patternp=Pattern.compile("^([^\(]+)\((.*)\)$");
Matcherm=p.matcher(method);
if(!m.find())
thrownewRuntimeException("錯誤的方法字元串:"+method);

//找到方法
Map<String,Integer>paramMap=parseParams(m.group(2));
ret.put(m.group(1).trim(),paramMap.remove(PARAM_KEY));
ret.putAll(paramMap);

returnret;
}

privatestaticMap<String,Integer>parseParams(Stringparams){
Map<String,Integer>ret=newHashMap<>();

intcount=0;
while(params.length()>0){
if(params.split(",")[0].indexOf("(")>=0){
//第一個參數為方法
Stringmethod=findFirstMethod(params);
params=(method.length()==params.length())?"":params.substring(method.length()+1);
ret.putAll(parseMethod(method));
}else{
//第一個參數為非方法
params=params.replaceAll("[^,]+(,(.+))*","$2");
}
count++;
}

ret.put(PARAM_KEY,count);
returnret;
}

(Stringparams){
Stringmethod="";
booleanstart=false;
intmatchCount=0;

for(inti=0;i<params.length();i++){
charch=params.charAt(i);
if(ch=='('){
start=true;
matchCount++;
}elseif(ch==')'){
matchCount--;
}
method+=params.substring(i,i+1);
if(start&&matchCount==0)break;
}

if(start)
returnmethod;
thrownewRuntimeException("錯誤的參數字元串:"+params);

}
}

『捌』 Java如何獲取方法參數中的名稱

一、從註解中獲取
使用註解方式,我們需要自定義一個註解,在註解中指定參數名,然後通過反射機制,獲取方法參數上的註解,從而獲取到相應的註解信息。這里自定義的註解是Param,通過value參數指定參數名,定義了一個工具類ParameterNameUtils來獲取指定方法的參數名列表,這里獲取測試類ParameterNameTest中定義的方法method1的參數名列表表,下面是具體的代碼。

『玖』 Java如何獲取方法參數的參數名稱

測試類:

『拾』 Java語言如何獲取當前正在使用方法的方法名。

System.out.println(new Throwable().getStackTrace()[0]);

執行結果
com..TestMain.main(TestMain.java:71)
包名com.
類名Testmain
方法名main,
處於方法行數71行

閱讀全文

與java獲取方法的名稱相關的資料

熱點內容
華為伺服器如何進陣列卡配置 瀏覽:433
apache伺服器ip地址訪問 瀏覽:716
如何買到安卓手機預裝軟體 瀏覽:535
冤罪百度雲不要壓縮 瀏覽:83
蘇州雲存儲伺服器 瀏覽:173
解壓收納原聲 瀏覽:384
java注冊驗證 瀏覽:372
火花app怎麼上推薦 瀏覽:980
什麼app能游戲投屏到電視上 瀏覽:455
伺服器託管到雲端是什麼意思 瀏覽:835
app保存草稿怎麼用 瀏覽:808
安卓如何進入proumb 瀏覽:144
主機虛擬雲伺服器 瀏覽:619
刪除分區加密的空間會不會恢復 瀏覽:706
京東app客戶上門怎麼看搜索量 瀏覽:741
怎麼在農行app購買黃金 瀏覽:46
c型開發板和單片機 瀏覽:146
虛擬機建立用戶的模板文件夾 瀏覽:904
無錫代碼編程培訓班 瀏覽:632
eps圖形數據加密 瀏覽:933