❶ java 怎麼在當前方法內部得到當前方法的參數類型列表
java在當前方法內部想得到當前方法參數類型列表,可以通過對該方法所在的類進行反射來得到當前方法的參數列表。對當前對象進行反射可以得到類中所有成員變數和方法的對象數組,對當前方法的名字與方法數組進行比較,得到相同名字的方法(即當前方法),然後通過使用該方法對象的方法來獲得參數列表。
❷ java怎麼獲取方法參數名
在java中,可以通過反射獲取到類、欄位、方法簽名等相關的信息,像方法名、返回值類型、參數類型、泛型類型參數等,但是不能夠獲取方法的參數名。在實際開發場景中,有時需要根據方法的參數名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable註解,如果不指定相應的value屬性,默認就是使用方法的參數名做為HTTP請求的參數名,它是怎麼做到的呢?
在這樣情況下,有兩種方法獲取方法來解決這種需求,第一種方法是使用註解,在註解中指定對應應的參數名稱,在需要使用參數名稱時,獲取註解中相應的值即可。第二種方法是從位元組碼中獲取方法的參數名,但是這有一個限制,只有在編譯時使用了-g或-g:vars參數生成了調試信息,class文件中才會生成方法參數名信息(在本地變數表LocalVariableTable中),而使用-g:none方式編譯的class文件中是沒有方法參數名信息的。所以要想完全不依賴class文件的編譯模式,就不能使用這種方式。
❸ Java如何獲取方法參數的參數名稱
packagecom.mikan;
importjava.lang.annotation.*;
/**
*@authorMikan
*@date2015-08-0423:39
*/
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public@interfaceParam{
Stringvalue();
}
獲取註解中的參數名的工具類:
packagecom.mikan;
importjava.lang.annotation.Annotation;
importjava.lang.reflect.Method;
/**
*@authorMikan
*@date2015-08-0500:26
*/
publicclassParameterNameUtils{
/**
*獲取指定方法的參數名
*
*@parammethod要獲取參數名的方法
*@return按參數順序排列的參數名列表
*/
publicstaticString[](Methodmethod){
Annotation[][]parameterAnnotations=method.getParameterAnnotations();
if(parameterAnnotations==null||parameterAnnotations.length==0){
returnnull;
}
String[]parameterNames=newString[parameterAnnotations.length];
inti=0;
for(Annotation[]parameterAnnotation:parameterAnnotations){
for(Annotationannotation:parameterAnnotation){
if(annotationinstanceofParam){
Paramparam=(Param)annotation;
parameterNames[i++]=param.value();
}
}
}
returnparameterNames;
}
}
測試類:
packagecom.mikan;
importjava.lang.reflect.Method;
importjava.util.Arrays;
/**
*@authorMikan
*@date2015-08-0423:40
*/
publicclassParameterNameTest{
publicvoidmethod1(@Param("parameter1")Stringparam1,@Param("parameter2")Stringparam2){
System.out.println(param1+param2);
}
publicstaticvoidmain(String[]args)throwsException{
Class<ParameterNameTest>clazz=ParameterNameTest.class;
Methodmethod=clazz.getDeclaredMethod("method1",String.class,String.class);
String[]parameterNames=ParameterNameUtils.(method);
System.out.println(Arrays.toString(parameterNames));
}
}
❹ java怎樣獲取url參數
如果是javaweb 項目,那麼非常簡單,直接調用 HttpServletRequest 對象的 .getParamter("參數名稱") 方法即可得到。
如果是普通java 項目:
/**
* 獲取網址的指定參數值
*
* @param url
* 網址
* @param parameter
* 參數名稱
* @author cevencheng
* @return
*/
public static String getParameter(String url, String parameter, String defaultValue) {
try {
final String charset = "utf-8";
url = URLDecoder.decode(url, charset);
if (url.indexOf('?') != -1) {
final String contents = url.substring(url.indexOf('?') + 1);
HashMap<String, String> map = new HashMap<String, String>();
String[] keyValues = contents.split("&");
for (int i = 0; i < keyValues.length; i++) {
String key = keyValues[i].substring(0, keyValues[i].indexOf("="));
String value = keyValues[i].substring(keyValues[i].indexOf("=") + 1);
if (key.equals(parameter)) {
if (value == null || "".equals(value.trim())) {
return defaultValue;
}
return value;
}
map.put(key, value);
}
}
return null;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
❺ Java如何找出一個字元串中包含的所有「參數」
首先來說,java是強類型語言,你C.D.E沒有定義就使用是違反java語言規則的
你的應該是JS,不是java
java的字元串是String 不是var java和基本數據類型必須通過封裝類轉化才能做比較,String對象沒有> == 這一類的比較符號(==號可以比較,但結果永遠是false)
❻ java中通過鍵盤輸入獲取多個參數
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
publicclassTest{
publicstaticvoidmain(String[]args)throwsIOException{
BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));
Stringarg=reader.readLine();
String[]num=arg.split("");
inta=Integer.valueOf(num[0]);
intb=Integer.valueOf(num[1]);
intc=Integer.valueOf(num[2]);
System.out.println("a="+a);
System.out.println("b="+b);
System.out.println("c="+c);
}
}
❼ java 獲取系統參數
java不適合做這些!
1,windows平台使用window api獲取(微軟那一套)
2,linux平台使用c++,c語言之類,調用配置文件或是shell,或者自己實現來讀取
3,需找java開源包來實現,如sigar
❽ java 通過反射怎麼獲取方法中參數值
答案是沒法獲取。
首先反射獲取的是類、屬性、或者方法的定義,就拿方法來說,方法的定義是什麼呢?
方法的定義包括:方法名,方法的參數類型列表,方法的返回值類型。
方法的參數類型列表包括什麼呢?
包括每個參數的順序和參數類型。
參數值是什麼?是在這個方法被調用的時候傳入的參數叫做參數值。反射呢,是獲取的它的定義,並不牽扯調用,所以說沒法獲取。
❾ servlet 從java中獲取參數
在web.xml裡面可以定義兩種參數:
一種是全局范圍的參數,
一種是servlet內的參數。
web.xml里定義參數的應用舉例:在做分頁功能時,可以在代碼中直給定pageSize的值,這樣,寫死在代碼中,靈活性差。改進方法:將pageSize配置在web.xml中,然後再在代碼中獲取。
1. 全局范圍的參數,存放在ServletContext對象中,在web.xml中的配置如下:
1 <context-param>2 <param-name>page-size</param-name>3 <param-value>2</param-value>4 </context-param>
在servlet中的獲取:
1 ServletContext sc = this.getServletContext();2 String strPageSize = sc.getInitParameter("page-size");3 int pageSize=Integer.parseInt(strPageSize);
或
1 int pageSize=Integer.parseInt(this.getServletContext().getInitParameter("page-size"));
2. Servlet范圍內的參數,只能在servlet的inti()方法中取得,在web.xml中的配置如下:
1 <servlet> 2 <servlet-name>SearchItemServlet</servlet-name> 3 <servlet-class> 4 com.bjpowernode.drp.basedata.web.SearchItemServlet 5 </servlet-class> 6 <init-param> 7 <param-name>page-size</param-name> 8 <param-value>3</param-value> 9 </init-param>10 </servlet>
在servlet中的獲取:
1 int pageSize=Integer.parseInt(this.getServletConfig().getInitParameter("page-size"));
getServletContext()獲得的是 <context-param> </context-param>配置的參數信息
getServletConfig()獲得的是 <init-param> </init-param>配置的參數信息
❿ 怎麼在java方法內部獲得給方法的參數列表。
Class<?>[] paramsClass = method.getParameterTypes();
取得參數列表的所有類型,這個是按這個方法的參數列表的順序給出參數的類型的,有了這個類型就可以了呀,不需要參數名稱;