如果原始类型的类型参数在创建过程中未传递,则原始类型是通用类或接口的对象。以下示例将展示上述概念。
package com.learnfk;
public class GenericsTester {
public static void main(String[] args) {
Box<Integer> box = new Box<Integer>();
box</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="typ">Integer</span><span class="pun">.</span><span class="pln">valueOf</span><span class="pun">(</span><span class="lit">10</span><span class="pun">));</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Integer Value :%d\n"</span><span class="pun">,</span><span class="pln"> box</span><span class="pun">.</span><span class="pln">getData</span><span class="pun">());</span><span class="pln">
</span><span class="typ">Box</span><span class="pln"> rawBox </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Box</span><span class="pun">();</span><span class="pln">
</span><span class="com">//没有警告</span><span class="pln">
rawBox </span><span class="pun">=</span><span class="pln"> box</span><span class="pun">;</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Integer Value :%d\n"</span><span class="pun">,</span><span class="pln"> rawBox</span><span class="pun">.</span><span class="pln">getData</span><span class="pun">());</span><span class="pln">
</span><span class="com">//未检查调用 set(T) 的警告</span><span class="pln">
rawBox</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="typ">Integer</span><span class="pun">.</span><span class="pln">valueOf</span><span class="pun">(</span><span class="lit">10</span><span class="pun">));</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Integer Value :%d\n"</span><span class="pun">,</span><span class="pln"> rawBox</span><span class="pun">.</span><span class="pln">getData</span><span class="pun">());</span><span class="pln">
</span><span class="com">//未经检查的转换警告</span><span class="pln">
box </span><span class="pun">=</span><span class="pln"> rawBox</span><span class="pun">;</span><span class="pln">
</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">printf</span><span class="pun">(</span><span class="str">"Integer Value :%d\n"</span><span class="pun">,</span><span class="pln"> box</span><span class="pun">.</span><span class="pln">getData</span><span class="pun">());</span><span class="pln">
}
}
class Box<T> {
private T t;
public void set(T t) {
this.t = t;
}
public T getData() {
return t;
}
}
这将产生以下输出。
Integer Value :10 Integer Value :10 Integer Value :10 Integer Value :10