栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java面向对象】08 反射,反射泛型数组(2)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java面向对象】08 反射,反射泛型数组(2)

反射泛型数组
public void reflectArrayCreatedTest() {
    try {
        String[] a1 = {"a", "b"};
        String[] r1 = (String[]) badCopy(a1, 2);
        System.out.println(Arrays.toString(r1));
    } catch (ClassCastException e) {
        e.printStackTrace();
    }
    System.out.println("=======");

    // String
    String[] a2 = {"a", "b"};
    String[] r2 = (String[]) goodCopy(a2, 2);
    System.out.println(Arrays.toString(r2)); // [a, b]

    // int
    int[] a3 = {1, 2};
    int[] r3 = (int[]) goodCopy(a3, 2);
    System.out.println(Arrays.toString(r3)); // [1, 2]
}


public static Object[] badCopy(Object[] a, int newLength) {
    Object[] newArray = new Object[newLength];
    System.arraycopy(a, 0, newArray, 0, Math.min(a.length, newLength));
    return newArray;
}


public static Object goodCopy(Object a, int newLength) {
    Class cl = a.getClass();
    if (!cl.isArray()) return null;
    // 确定数组类型
    Class componentType = cl.getComponentType();
    int length = Array.getLength(a);
    // 创建指定类型数组
    Object newArray = Array.newInstance(componentType, newLength);
    System.arraycopy(a, 0, newArray, 0, Math.min(length, newLength));
    return newArray;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695320.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号