2012-11-14 14 views
2

我正在使用反射來獲取所有方法的參數名稱。Reflection Method.getParameterTypes() - 對象數組參數

問題是,當所述參數中的一個的類型爲:the.package.myobject [](數組)

String name = method.getParameterTypes()‬[0].getName() 

我得到:[the.package.myobject;] //字母L和符號;

我該如何獲得純類型名稱? (不substringing)

回答

8

你需要檢查type.isArray(),如果是,請getComponentType()

final Class<?> c = method.getParameterTypes()[0]; 
final String name = (c.isArray()? c.getComponentType() : c).getName(); 
+0

我剛加了'()' – AlexR

+1

+1或者getComponentType()並檢查'null'。 –

1

最有可能你想要的是

Class firstType = method.getParameterTypes()‬[0]; 

// will be null if not an array. 
Class firstComponentType = firstType.getComponentType(); 
+0

對不起,這是一個錯字,請再看我的文章。 – markiz