大家好,今天小编关注到一个比较有意思的话题,就是关于java语言泛形问题的问题,于是小编就整理了2个相关介绍Java语言泛形问题的解答,让我们一起看看吧。
j***a怎么获取一个泛型方法的真实泛型类型?
我认为,如果在方法内部获取还是可行的,但如果希望通过一个方法来获取一个泛型方法的真实泛型类型,那应该是实现不了。
首先J***a中的泛型,也叫参数化类型,没记错泛型应该是jdk5引入的特性,泛型目的在于使数据类型可以作为参数传入,从而可以动态的改变某个变量的数据类型。
那么什么是泛型方法呢?就是泛型类型是声明在方法上,只有当调用该方法时才会将真实类型传入。如果你是在方法内部获取那直接调用泛型对象的getClass方法即可。但如果希望通过一方法来获取某个泛型方法的真实类型,我认为没法实现。因为未调用方法时,真实的数据类型还未入,所以根本无法取到泛型对应的真实类型。
所以下面我就说说如何在泛型方法内部获取泛型的真实类型。
在上图中,我声明了一个泛型方法:findFirst, 用于获取数组的第一个元素。
运行如下图:
ParameterizedType pt =(ParameterizedType)this.getClass().getGenericSuperclass();Class<T> entityClass =(Class<T>)pt.getActualTypeArguments()[0];entityClass就是实际类型。
j***a为什么不支持泛型数组?
这个是数组的机制,数组声明时就要确定其类型。也和数组的内存空间有关,当你声明一个数组时,其实就确立一个空间,这个空间对数据是有限制的,不是什么东西都可以放进去的。泛型是指先不确定其类型,当使用时才去确定其具体类型。所以这个不支持。其实你可以用集合List,set这些都支持泛型
到此,以上就是小编对于j***a语言泛形问题的问题就介绍到这了,希望介绍关于j***a语言泛形问题的2点解答对大家有用。