普通泛型
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Point<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此处可以随便写标识符号,T是type的简称 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// var的类型由T指定,即:由外部指定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 返回值的类型由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置的类型也由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo06<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Point<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> p <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Point<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 里面的var类型为String类型 <span class="pln"><span class="pln">
p<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="str"><span class="str">"it"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置字符串 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="pln"><span class="pln">p<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">().<span class="pln"><span class="pln">length<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 取得字符串的长度 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Notepad<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> K<span class="pun"><span class="pun">,<span class="pln"><span class="pln">V<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此处指定了两个泛型类型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> K key <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此变量的类型由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> V value <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此变量的类型由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> K getKey<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">key <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> V getValue<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">value <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setKey<span class="pun"><span class="pun">(<span class="pln"><span class="pln">K key<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">key <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> key <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setValue<span class="pun"><span class="pun">(<span class="pln"><span class="pln">V value<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">value <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> value <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo09<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Notepad<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">><span class="pln"><span class="pln"> t <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义两个泛型类型的对象 <span class="pln"><span class="pln">
t <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Notepad<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 里面的key为String,value为Integer <span class="pln"><span class="pln">
t<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setKey<span class="pun"><span class="pun">(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置第一个内容 <span class="pln"><span class="pln">
t<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setValue<span class="pun"><span class="pun">(<span class="lit"><span class="lit">20<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置第二个内容 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="str"><span class="str">"姓名;"<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> t<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getKey<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 取得信息 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="str"><span class="str">",年龄;"<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> t<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getValue<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 取得信息 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
通配符
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型变量 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 直接打印 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo14<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 使用String为泛型类型 <span class="pln"><span class="pln">
i<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="str"><span class="str">"it"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置内容 <span class="pln"><span class="pln">
fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> fun<span class="pun"><span class="pun">(<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="pun"><span class="pun">?><span class="pln"><span class="pln"> temp<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 可以接收任意的泛型对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="str"><span class="str">"内容:"<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> temp<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
受限泛型
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型变量 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 直接打印 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo17<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i1 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明Integer的泛型对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Float<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i2 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Float<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明Float的泛型对象 <span class="pln"><span class="pln">
i1<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="lit"><span class="lit">30<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置整数,自动装箱 <span class="pln"><span class="pln">
i2<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="lit"><span class="lit">30.1f<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置小数,自动装箱 <span class="pln"><span class="pln">
fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i1<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i2<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> fun<span class="pun"><span class="pun">(<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="pun"><span class="pun">?<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">extends<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Number<span class="pun"><span class="pun">><span class="pln"><span class="pln"> temp<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 只能接收Number及其Number的子类 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="pln"><span class="pln">temp <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> <span class="str"><span class="str">"、"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型变量 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 直接打印 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo21<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i1 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明String的泛型对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Object<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i2 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Object<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明Object的泛型对象 <span class="pln"><span class="pln">
i1<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="str"><span class="str">"hello"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
i2<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Object<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i1<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i2<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> fun<span class="pun"><span class="pun">(<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="pun"><span class="pun">?<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">super<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> temp<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 只能接收String或Object类型的泛型 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="pln"><span class="pln">temp <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> <span class="str"><span class="str">"、"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Java泛型无法向上转型
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型变量 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 直接打印 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo23<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i1 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 泛型类型为String <span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Object<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i2 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
i2 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> i1 <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">//这句会出错 incompatible types <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Java泛型接口
<span class="kwd"><span class="kwd">interface<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 在接口上定义泛型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义抽象方法,抽象方法的返回值就是泛型类型 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">implements<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型接口的子类 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义属性 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 通过构造方法设置属性内容 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo24<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> arsg<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明接口对象 <span class="pln"><span class="pln">
i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 通过子类实例化对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="str"><span class="str">"内容:"<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> i<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
<span class="kwd"><span class="kwd">interface<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 在接口上定义泛型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义抽象方法,抽象方法的返回值就是泛型类型 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">implements<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义泛型接口的子类 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 定义属性 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 通过构造方法设置属性内容 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo25<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> arsg<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 声明接口对象 <span class="pln"><span class="pln">
i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">InfoImpl<span class="pun"><span class="pun">(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 通过子类实例化对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="str"><span class="str">"内容:"<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> i<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Java泛型方法
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Demo<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> T fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T t<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 可以接收任意类型的数据 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> t <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 直接把参数返回 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo26<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Demo<span class="pln"><span class="pln"> d <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Demo<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 实例化Demo对象 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> str <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> d<span class="pun"><span class="pun">.<span class="pln"><span class="pln">fun<span class="pun"><span class="pun">(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 传递字符串 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">int<span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> d<span class="pun"><span class="pun">.<span class="pln"><span class="pln">fun<span class="pun"><span class="pun">(<span class="lit"><span class="lit">30<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 传递数字,自动装箱 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="pln"><span class="pln">str<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 输出内容 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 输出内容 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
通过泛型方法返回泛型类型实例
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">extends<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Number<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 指定上限,只能是数字类型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此类型由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 覆写Object类中的toString()方法 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo27<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> fun<span class="pun"><span class="pun">(<span class="lit"><span class="lit">30<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">extends<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Number<span class="pun"><span class="pun">><span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> fun<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T param<span class="pun"><span class="pun">){<span class="com"><span class="com">//方法中传入或返回的泛型类型由调用方法时所设置的参数类型决定 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> temp <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 根据传入的数据类型实例化Info <span class="pln"><span class="pln">
temp<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">param<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 将传递的内容设置到Info对象的var属性之中 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> temp <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 返回实例化对象 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
使用泛型统一传入的参数类型
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 指定上限,只能是数字类型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 此类型由外部决定 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pln"><span class="pln"> toString<span class="pun"><span class="pun">(){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 覆写Object类中的toString()方法 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">.<span class="pln"><span class="pln">toString<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo28<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i1 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i2 <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">>()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
i1<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="str"><span class="str">"HELLO"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置内容 <span class="pln"><span class="pln">
i2<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 设置内容 <span class="pln"><span class="pln">
add<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i1<span class="pun"><span class="pun">,<span class="pln"><span class="pln">i2<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> add<span class="pun"><span class="pun">(<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i1<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i2<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="pln"><span class="pln">println<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i1<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">()<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> <span class="str"><span class="str">" "<span class="pln"><span class="pln"> <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> i2<span class="pun"><span class="pun">.<span class="pln"><span class="pln">getVar<span class="pun"><span class="pun">())<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Java泛型数组
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo30<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Integer<span class="pln"><span class="pln"> i<span class="pun"><span class="pun">[]<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> fun1<span class="pun"><span class="pun">(<span class="lit"><span class="lit">1<span class="pun"><span class="pun">,<span class="lit"><span class="lit">2<span class="pun"><span class="pun">,<span class="lit"><span class="lit">3<span class="pun"><span class="pun">,<span class="lit"><span class="lit">4<span class="pun"><span class="pun">,<span class="lit"><span class="lit">5<span class="pun"><span class="pun">,<span class="lit"><span class="lit">6<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 返回泛型数组 <span class="pln"><span class="pln">
fun2<span class="pun"><span class="pun">(<span class="pln"><span class="pln">i<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> T<span class="pun"><span class="pun">[]<span class="pln"><span class="pln"> fun1<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T<span class="pun"><span class="pun">...<span class="pln"><span class="pln">arg<span class="pun"><span class="pun">){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 接收可变参数 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> arg <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 返回泛型数组 <span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">><span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> fun2<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T param<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln"> <span class="com"><span class="com">// 输出 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="str"><span class="str">"接收泛型数组:"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">for<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T t<span class="pun"><span class="pun">:<span class="pln"><span class="pln">param<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">System<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">out<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">print<span class="pun"><span class="pun">(<span class="pln"><span class="pln">t <span class="pun"><span class="pun">+<span class="pln"><span class="pln"> <span class="str"><span class="str">"、"<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
Java泛型的嵌套设置
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> T<span class="pun"><span class="pun">,<span class="pln"><span class="pln">V<span class="pun"><span class="pun">>{<span class="pln"><span class="pln"> <span class="com"><span class="com">// 接收两个泛型类型 <span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> T <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> V value <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">,<span class="pln"><span class="pln">V value<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setVar<span class="pun"><span class="pun">(<span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setValue<span class="pun"><span class="pun">(<span class="pln"><span class="pln">value<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setVar<span class="pun"><span class="pun">(<span class="pln"><span class="pln">T <span class="kwd"><span class="kwd">var<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setValue<span class="pun"><span class="pun">(<span class="pln"><span class="pln">V value<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">value <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> value <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> T getVar<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="kwd"><span class="kwd">var<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> V getValue<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">value <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Demo<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> S<span class="pun"><span class="pun">>{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">private<span class="pln"><span class="pln"> S info <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Demo<span class="pun"><span class="pun">(<span class="pln"><span class="pln">S info<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">setInfo<span class="pun"><span class="pun">(<span class="pln"><span class="pln">info<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> setInfo<span class="pun"><span class="pun">(<span class="pln"><span class="pln">S info<span class="pun"><span class="pun">){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">info <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> info <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> S getInfo<span class="pun"><span class="pun">(){<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">return<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">this<span class="pun"><span class="pun">.<span class="pln"><span class="pln">info <span class="pun"><span class="pun">;<span class="pln"><span class="pln">
<span class="pun"><span class="pun">}<span class="pln"><span class="pln">
<span class="pun"><span class="pun">};<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">class<span class="pln"><span class="pln"> <span class="typ"><span class="typ">GenericsDemo31<span class="pun"><span class="pun">{<span class="pln"><span class="pln">
<span class="kwd"><span class="kwd">public<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">static<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">void<span class="pln"><span class="pln"> main<span class="pun"><span class="pun">(<span class="typ"><span class="typ">String<span class="pln"><span class="pln"> args<span class="pun"><span class="pun">[]){<span class="pln"><span class="pln">
<span class="typ"><span class="typ">Demo<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">>><span class="pln"><span class="pln"> d <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 将Info作为Demo的泛型类型 <span class="pln"><span class="pln">
<span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">><span class="pln"><span class="pln"> i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">null<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// Info指定两个泛型类型 <span class="pln"><span class="pln">
i <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new<span class="pln"><span class="pln"> <span class="typ"><span class="typ">Info<span class="pun"><span class="pun"><<span class="pln"><span class="pln"> <span class="typ"><span class="typ">String<span class="pun"><span class="pun">,<span class="typ"><span class="typ">Integer<span class="pun"><span class="pun">>(<span class="str"><span class="str">"汤姆"<span class="pun"><span class="pun">,<span class="lit"><span class="lit">30<span class="pun"><span class="pun">)<span class="pln"><span class="pln"> <span class="pun"><span class="pun">;<span class="pln"><span class="pln"> <span class="com"><span class="com">// 实例化Info对象 <span class="pln"><span class="pln">
d <span class="pun"><span class="pun">=<span class="pln"><span class="pln"> <span class="kwd"><span class="kwd">new</span><span class="typ">Demo</span><span class="pun"><</span><span class="typ">Info</span><span class="pun"><</span><span class="typ">String</span><span class="pun">,</span><span class="typ">Integer</span><span class="pun">>>(</span><span class="pln">i</span><span class="pun">)</span><span class="pun">;</span><span class="com">// 在Demo类中设置Info类的对象 </span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"内容一:"</span><span class="pun">+</span><span class="pln"> d</span><span class="pun">.</span><span class="pln">getInfo</span><span class="pun">().</span><span class="pln">getVar</span><span class="pun">())</span><span class="pun">;</span><span class="typ">System</span><span class="pun">.</span><span class="kwd">out</span><span class="pun">.</span><span class="pln">println</span><span class="pun">(</span><span class="str">"内容二:"</span><span class="pun">+</span><span class="pln"> d</span><span class="pun">.</span><span class="pln">getInfo</span><span class="pun">().</span><span class="pln">getValue</span><span class="pun">())</span><span class="pun">;</span><span class="pun">}</span><span class="pun">};</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span>
转自:http://www.hollischuang.com/archives/228
Original: https://www.cnblogs.com/incognitor/p/9760498.html
Author: 無名之徒
Title: Java泛型用法总结
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/620430/
转载文章受原作者版权保护。转载请注明原作者出处!