【发布时间】:2011-06-20 14:31:22
【问题描述】:
我正在尝试使用给定的输入参数调用 API。输入参数以列表的形式出现。现在我的工作是一一获取 API 的参数类型,并从 List 中构建所需的类型实例。我可以为简单的 java 类型、List、Set 做,但我被困在数组中。
Method method = getMethodFromTheClassBasedOnvalues( loadedClass, apiName, numberOfParams);
Type[] apiMethodParams = method.getGenericParameterTypes();
List<Type> expectedParamTypes = Arrays.asList(apiMethodArgTypes);
List<Object> actualValues = // method input.
List<Object> argsList = new ArrayList<Object>();
for (int i = 0; i < expectedParamTypes.length; i++) {
argsList.add(castToRequiredType(expectedParamTypes.get(i),
actualValues.get(i)));
method.invoke(loadClass.newInstance(), argsList.toArray());
当我得到 API (String, String[]) 类型的方法时,问题就来了
[class java.lang.String, class [Ljava.lang.String;] 或者如果一个参数 [Ljava.lang.String;
基于此,我怎么知道它是否采用字符串数组。我看到不同之处在于类名在 [L 之后开始并以; 结束。但有保证吗?
CustomObject[] 的行为也会相同吗?
有没有什么聪明的方法可以知道该方法是否正在使用一个数组并在最近构建它? 朝这个方向的任何想法都会有所帮助。
提前致谢。
【问题讨论】:
标签: java arrays reflection methods