1

我正在尝试java.lang.reflect.Constructor<T>通过使用该getParameterTypes()方法从对象中提取参数类型

构造函数如下所示:

 public SearchParameters(boolean doStaticBoosting, boolean doRewrites, boolean doCatalogsFacet, long userId,
                            Filter catalogsFilter, boolean doCatalogsFilterTypeFacet, boolean doSocialBoosting,
                            long[] categoryFilteringId)

现在,当我调用此方法时,我得到以下参数类型:

在此处输入图像描述

如您所见,最后一个 Class 参数确实搞砸了,并定义为

类[J

实际上我希望它是一个long[].class. 我需要稍后重建这个对象,当然我不能仅仅基于我得到的参数信息来做到这一点。

4

3 回答 3

4

这一点也不乱。这只是 的字符串表示形式long[].class

System.out.println(long[].class); // class [J

除非您真的需要以某种方式保留字符串表示,否则您应该将值保持为 aClass<?>并且一切都应该很好。

于 2012-07-22T08:54:15.890 回答
2

那是long[]班级的名字。尝试这个:

    long[] longs = {1L, 2L};
    System.out.println("Name is: " + longs.getClass().getName());

这打印:

Name is: [J

您可以从Class.getName() 的 Javadocs 中获取所有原始数组类的名称。

于 2012-07-22T08:54:07.113 回答
1

class [J 的名称long[].class。查看Class.getName()JavaDoc

long[].class此外,您可以使用此名称创建一个实例,请参阅:如何创建原始数组类?

于 2012-07-22T08:54:15.847 回答