w1nd~ 2019-04-18 11:08 采纳率: 100%
浏览 397
已采纳

这个方法有什么用? (com.sun.beans.TypeResolver#fixGenericArray)

private static Type fixGenericArray(Type var0) {
    if (var0 instanceof GenericArrayType) {
        Type var1 = ((GenericArrayType)var0).getGenericComponentType();
        var1 = fixGenericArray(var1);
        if (var1 instanceof Class) {
            return Array.newInstance((Class)var1, 0).getClass();
        }
    }

    return var0;
}

最近在研究Java泛型的时候碰到这个方法, 但是想了半天也不知道这个方法到底有什么用.

能够成为泛型数组componentType的只有以下这几种类型(这里的List和String只是作为例子): T, List<T>, List<String>, 即ParameterizedType和TypeVariable, 而不可能是原始类型, 因为形如String[]或者多维数组String[][]等形式, 它本身就不属于GenericArrayType, 而是Class. 所以, 以上代码到底有什么用?

  • 写回答

1条回答 默认 最新

  • w1nd~ 2019-04-18 19:23
    关注

    已解决, 此方法是为了防止一个JDK的bug, 该bug会把普通数组反射成泛型数组, 该方法就是把这个错误的泛型数组还原成普通数组.
    https://bugs.java.com/bugdatabase/view_bug.do?bug_id=5041784

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!