zoukankan      html  css  js  c++  java
  • java创建泛型数组

    java中创建泛型数组并不是不可能,创建泛型数组通过反射,给构造函数传递两个参数,一个类型标记,一个数组大小。‘

    简单Demo如下:

    import java.lang.reflect.Array;
    
    /**
     * 创建泛型数组
     * @author hetiantian
     */
    public class GenericArrayWithTypeToken<T> {
        private T[] array;
    
        public GenericArrayWithTypeToken(Class<T> type, int size) {
            array = (T[]) Array.newInstance(type, size);
        }
    
        public static void main(String[] args) {
            GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>(House.class, 10);
            System.out.println(g.array.getClass().getSimpleName());
            System.out.println(g.array.length);
        }
    }

    运行结果:

    House[]
    10

    从结果来看,成功创建了所想要的数组类型,传递类型参数到构造器中是为了从擦除中恢复

    错误的创建方式:

    /**
     * 创建泛型数组
     * @author hetiantian
     */
    public class GenericArrayWithTypeToken<T> {
        private T[] array;
    
        public GenericArrayWithTypeToken(int size) {
            array = (T[]) new Object[size];  
        }
    
        public static void main(String[] args) {
            GenericArrayWithTypeToken<House> g = new GenericArrayWithTypeToken<>( 10);
            System.out.println(g.array.getClass().getSimpleName());
            System.out.println(g.array.length);
        }
    }

    数组需要确定的类型,这个Demo中的构造函数相当于T[] array = new T[size]程序运行将会出错

  • 相关阅读:
    兼容性测试中如何切换和管理多个JDK版本
    Win10的分辨率问题
    sql和access中截取字符串的区别
    ArcGIS制图之Sub Points点抽稀
    Office版本问题0x80029C4A
    ArcGIS制图之Maplex自动点抽稀
    ArcGIS制图之Subset工具点抽稀
    .NET破解之100%营销QQ辅助软件【更新】
    Office2016体验
    Log4net中的调错
  • 原文地址:https://www.cnblogs.com/Hdaydayup/p/7472674.html
Copyright © 2011-2022 走看看