我试图了解Generics的工作原理,它说类被编译成普通类,任何地方都没有提到类型,还有checkcast操作符,它传递了对象类从ArrayList转换到的类型。
String i=ArrayListObject.get(position);但是,当没有类型时,编译器为什么知道泛型ArrayList只能存储在<>中声明的类型。编译类时,这些信息存储在哪里。请更新
发布于 2016-09-19 15:51:36
这只是事实的一半。
是的,在运行时中,没有使用这些类型的信息;只有“对象”被移动。这就是所谓的类型擦除。
但是:哪些领域,方法,.使用一些泛型定义的T非常好地编译到类文件中。这样编译器就可以读取这个类文件;并且能够理解您想要实例化一些ArrayList<String>。
换句话说:您在这里谈论的是两种不同的东西:( A)编译器读取类文件以完成其工作;( B) JVM读取类文件以运行代码。
所以,当您非常好奇的时候,究竟在哪里存储了信息,请参见here!
https://stackoverflow.com/questions/39577142
复制相似问题