java獲取參數類型
Ⅰ java怎麼獲取方法參數名
在java中,可以通過反射獲取到類、欄位、方法簽名等相關的信息,像方法名、返回值類型、參數類型、泛型類型參尺培談數等,但是不能夠獲取方法的參數名。在實際開發場景中,有時需要根據方法的參數名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable註解,如果不指定相應的value屬性,默認就是使用方法的參數名做為HTTP請求的參數名,它是怎麼做到的呢?
在這樣情況下,有兩種方法獲取方法來解決這種需求中纖,第一種方法是使用註解,在註解中指定對應應的參數名稱,在需要使用參數名稱時,獲取註解中相應的值即可。第二種方法是從位元組碼中獲取方法的參數名,但是這有一個限制,只有在編譯時使用了-g或-g:vars參數生成了調試信息,class文件中才會生成方法參數名信息(在本地變數表LocalVariableTable中),而使用-g:none方式編譯的class文件中是沒有方法參數名信息的。所以要想完全不依賴class文件的編譯模式陵碰,就不能使用這種方式。
Ⅱ Java中如何判斷參數的類型。
可以通過Class的name屬性來查看數據類型,每一個對象都有一個Class,在java中一切皆對象,故能夠通過如下方式來獲取對象的類型:
Datedate=newDate();
System.out.println(date.getClass().getName());//java.util.Date
Ⅲ java 獲取int類型數據長度的方法
可以使用以下三種方法:
一、基於對數的解決方案:
valueOf 方法返回的相關Number對象持有傳遞的參數的值。
該參數可以是基液敬本數據類型,字元串(String),等等。 這個方法是一個靜態方法。該方法可以採取兩個參數,其中一個是String,另一個是基數。
使用語句:int numberOfDigits = String.valueOf(n).length();。
二、鬧搜慎使用對數方法:
java.lang.StrictMath.log10() 方法返回以10為底的對數的double值。
它包括了一些情況: 如果參數為NaN或小於零,那麼結果為NaN。 如果參數為正無窮大,那麼結果為正無窮大。 如果參數為正零或負零,那麼結果是負無窮大。 如果漏指參數等於10N的整數n,那麼結果是n。
使用語句:int nDigits = floor(log10(abs(the_integer))) + 1;需要使用inclue math.h庫。
三、判斷數據的大小:
整數類型,任意一個數字<10就是一位數,實現代碼如下:
Ⅳ java 怎麼在當前方法內部得到當前方法的參數類型列表
用反射機制,簡單寫了一個例子,不懂的可以看一下亂做相關api
public
class
OwerMethodParam
{
public
static
void
main(String[]
args)
{
new
OwerMethodParam().test("bb");
}
public
void
test(String
aa)
{
Method[]
methods
=
OwerMethodParam.class.getDeclaredMethods();
//取得賀正這個類的所有方法
if
(methods
!=
null)
{
for
(int
i
=
0;
i
<
methods.length;
i++)
{
Method
method
=
methods[i];
if
("test".equals(method.getName()))
{
//取得本方法,這個方禪陪悔法是test,所以就用test比較
Class
?
[]
paramsClass
=
method.getParameterTypes();
//取得參數列表的所有類
if
(paramsClass
!=
null)
{
for
(Class
?
class1
:
paramsClass)
{
System.out.println(class1.getName());
}
}
break;
}
}
}
}
Ⅳ Java如何獲取方法的參數名稱
package test;
import java.lang.reflect.Method;
public class TTT {
public static void main(String[] args) {
Class c = Test.class;
Method[] methods =c.getDeclaredMethods();
for (Method method : methods) {
System.out.print("方法的返回值"+method.getReturnType().getName());
System.out.print(" 方法名:"+method.getName()+"(");
Class[] paraTypes = method.getParameterTypes();
for (Class class1 : paraTypes) {
System.out.print("參數類型:"+class1.getSimpleName()+",");
}
System.out.println(")");
}
}
}
class Test
{
public void say(String word)
{
System.out.println(word);
}
public void say(String word,int n)
{
for(int i=0;i<n;i++){
System.out.println(word);
}
}
}
===============
方法的返回值void 方法名:say(參數類型:String,)
方法的返回值void 方法名:say(參數類型:String,參數類型:int,)
Ⅵ java 怎麼在當前方法內部得到當前方法的參數類型列表
java在當前方法內部想得到當前方法參數類型列表,可以通過對該方法所在的類進行反射來得到當前方法的參數列表。對當前對象進行反射可以得到類中所有成員變數和方法的對象數組,對當前方法的名字與方法數組進行比較,得到相同名字的方法(即當前方法),然後通過使用該方法對象的方法來獲得參數列表。
Ⅶ java反射獲取方法不定參數的名稱和類型
(Object...objects){
for(Objectobj:objects){
Classclz=obj.getClass();
System.out.println(clz);
}
returnfalse;
}