Java 1.7中的Java反射getGenericReturnType()错误

Java 1.7中的Java反射getGenericReturnType()错误,java,reflection,Java,Reflection,我有一个示例类,如下所示 class Sample { public List<BigInteger[]>[] method() { return null;} } 我的类型是java.util.List[],但当我尝试使用Java1.6时,得到的类型是java.util.List[] 这背后的原因是什么 java.util.List<[Ljava.math.BigInteger;>[] (in java 1.7) java.util.List<java

我有一个示例类,如下所示

class Sample {
    public List<BigInteger[]>[] method() { return null;}
}
我的类型是
java.util.List[]
,但当我尝试使用Java1.6时,得到的类型是
java.util.List[]

这背后的原因是什么

java.util.List<[Ljava.math.BigInteger;>[]  (in java 1.7)
java.util.List<java.math.BigInteger[]>[]   (in java 1.6)
java.util.List[](在java 1.7中)
java.util.List[](在Java1.6中)

您只是看到类型参数的字符串表示形式有所不同
[LFoo
是显示
Foo
数组的正常方式(承认有些模糊)。不清楚为什么会改变这种行为(但仅在一个地方)对于Java 7,但我怀疑如果以编程方式查看这两种情况下的类型,您会发现它包含完全相同的数据。只是不要依赖字符串表示。

Hi Jon,assertTrue((set.contains(BigInteger.class)));因此失败。这在1.6中起作用。集合包含1.7中上述表示形式中的BigInteger,这是我观察到的唯一区别。@Zeus:我们不知道这里有什么
set
。听起来你有很多问题中没有提供的上下文。现在是提供一个简短但复杂的ete程序演示问题:)您好,Jon,很抱歉造成混淆,集合包含上述示例类中方法的返回类型中的类。@Zeus:不清楚您的确切意思……但如果您提供一个简短但完整的程序演示问题,它将是。
java.util.List<[Ljava.math.BigInteger;>[]  (in java 1.7)
java.util.List<java.math.BigInteger[]>[]   (in java 1.6)