Java中泛型中擦除的概念是什么?

Java中泛型中擦除的概念是什么?

Java中泛型中擦除的概念是什么?



SMILET
浏览 997回答 3
3回答

FFIVE

擦除,字面意思是从编译好的字节码中删除源代码中存在的类型信息。让我们用一些代码来理解这一点。import&nbsp;java.util.ArrayList;import&nbsp;java.util.Iterator;import&nbsp;java.util.List;public&nbsp;class&nbsp;GenericsErasure&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[])&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List<String>&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList<String>(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add("Hello"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iterator<String>&nbsp;iter&nbsp;=&nbsp;list.iterator(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(iter.hasNext())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s&nbsp;=&nbsp;iter.next(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(s); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;}}如果您编译了这段代码,然后用Java反编译器反编译它,您将得到类似的结果。注意,反编译代码不包含原始源代码中存在的类型信息的跟踪。import&nbsp;java.io.PrintStream;import&nbsp;java.util.*;public&nbsp;class&nbsp;GenericsErasure{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;GenericsErasure() &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String&nbsp;args[]) &nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List&nbsp;list&nbsp;=&nbsp;new&nbsp;ArrayList(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.add("Hello"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;s; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(Iterator&nbsp;iter&nbsp;=&nbsp;list.iterator();&nbsp;iter.hasNext();&nbsp;System.out.println(s)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s&nbsp;=&nbsp;(String)iter.next(); &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java