您的位置 首页 > 数码极客

java如何获取接口的泛型参数

泛型是JDK 1.5的一项新特性,它的本质是参数化类型(ParameterizedType)的应用,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。

泛型类:

public class Test<T> {}

泛型接口:

public interface Test<T> {}

泛型方法:

public class Test { public <T extends List> void test(T t){} }

Java 的泛型是通过语法糖来实现的,语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。

public class Test { public static void main(String[] args) { List<String> list = new ArrayList<>(); li("hello"); li("world"); for(String s : list) { Sy(s); } } }

通过 javac Te 编译后得到 Te 文件,然后反编译 class 文件后得到如下内容:

public class Test { public Test() { } public static void main(String[] var0) { ArrayList var1 = new ArrayList(); var1.add("hello"); var1.add("world"); Iterator var2 = var1.iterator(); while()) { String var3 = (String(); Sy(var3); } } }

可以看到在源码中的泛型在编译后消失了,编译后的字节码是通过强制转换得到的 String 类型,Java 中有大量的语法糖的应用,例如 switch、装箱与拆箱、枚举、变长参数等等,想要了解内部的秘密可以尝试反编译字节码方式来看到它的真实面貌。

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“java如何获取接口的泛型参数”边界阅读