我正在尝试使用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
。我需要稍后重建这个对象,当然我只能根据我得到的参数信息来做到这一点。
答案 0 :(得分:4)
这根本不是搞砸了。这只是long[].class
的字符串表示形式:
System.out.println(long[].class); // class [J
除非你真的需要以某种方式保留字符串表示,否则你应该将值保持为Class<?>
并且一切都应该很好。
答案 1 :(得分:2)
这是long[]
类的名称。试试这个:
long[] longs = {1L, 2L};
System.out.println("Name is: " + longs.getClass().getName());
打印:
Name is: [J
您可以从Javadocs of Class.getName()获取所有原始数组类的名称。
答案 2 :(得分:1)
class [J
是long[].class
的名称。查看Class.getName()
JavaDoc。
此外,您可以使用此名称创建long[].class
的实例,请参阅:How to create a Class of primitive array?