Java泛型用法总结

普通泛型

<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">// &#x6B64;&#x5904;&#x53EF;&#x4EE5;&#x968F;&#x4FBF;&#x5199;&#x6807;&#x8BC6;&#x7B26;&#x53F7;&#xFF0C;T&#x662F;type&#x7684;&#x7B80;&#x79F0;  <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&#x7684;&#x7C7B;&#x578B;&#x7531;T&#x6307;&#x5B9A;&#xFF0C;&#x5373;&#xFF1A;&#x7531;&#x5916;&#x90E8;&#x6307;&#x5B9A;  <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">// &#x8FD4;&#x56DE;&#x503C;&#x7684;&#x7C7B;&#x578B;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x8BBE;&#x7F6E;&#x7684;&#x7C7B;&#x578B;&#x4E5F;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x91CC;&#x9762;&#x7684;var&#x7C7B;&#x578B;&#x4E3A;String&#x7C7B;&#x578B;  <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">// &#x8BBE;&#x7F6E;&#x5B57;&#x7B26;&#x4E32;  <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">// &#x53D6;&#x5F97;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x957F;&#x5EA6;  <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">// &#x6B64;&#x5904;&#x6307;&#x5B9A;&#x4E86;&#x4E24;&#x4E2A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">// &#x6B64;&#x53D8;&#x91CF;&#x7684;&#x7C7B;&#x578B;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x6B64;&#x53D8;&#x91CF;&#x7684;&#x7C7B;&#x578B;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x5B9A;&#x4E49;&#x4E24;&#x4E2A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;  <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">// &#x91CC;&#x9762;&#x7684;key&#x4E3A;String&#xFF0C;value&#x4E3A;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">"&#x6C64;&#x59C6;"<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">// &#x8BBE;&#x7F6E;&#x7B2C;&#x4E00;&#x4E2A;&#x5185;&#x5BB9;  <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">// &#x8BBE;&#x7F6E;&#x7B2C;&#x4E8C;&#x4E2A;&#x5185;&#x5BB9;  <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">"&#x59D3;&#x540D;&#xFF1B;"<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">// &#x53D6;&#x5F97;&#x4FE1;&#x606F;  <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">"&#xFF0C;&#x5E74;&#x9F84;&#xFF1B;"<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">// &#x53D6;&#x5F97;&#x4FE1;&#x606F;  <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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x53D8;&#x91CF;  <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">// &#x76F4;&#x63A5;&#x6253;&#x5370;  <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">// &#x4F7F;&#x7528;String&#x4E3A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">// &#x8BBE;&#x7F6E;&#x5185;&#x5BB9;  <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">// &#x53EF;&#x4EE5;&#x63A5;&#x6536;&#x4EFB;&#x610F;&#x7684;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;  <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">"&#x5185;&#x5BB9;&#xFF1A;"<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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x53D8;&#x91CF;  <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">// &#x76F4;&#x63A5;&#x6253;&#x5370;  <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">// &#x58F0;&#x660E;Integer&#x7684;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;  <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">// &#x58F0;&#x660E;Float&#x7684;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;  <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">// &#x8BBE;&#x7F6E;&#x6574;&#x6570;&#xFF0C;&#x81EA;&#x52A8;&#x88C5;&#x7BB1;  <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">// &#x8BBE;&#x7F6E;&#x5C0F;&#x6570;&#xFF0C;&#x81EA;&#x52A8;&#x88C5;&#x7BB1;  <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">// &#x53EA;&#x80FD;&#x63A5;&#x6536;Number&#x53CA;&#x5176;Number&#x7684;&#x5B50;&#x7C7B;  <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">"&#x3001;"<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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x53D8;&#x91CF;  <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">// &#x76F4;&#x63A5;&#x6253;&#x5370;  <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">// &#x58F0;&#x660E;String&#x7684;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;  <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">// &#x58F0;&#x660E;Object&#x7684;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;  <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">// &#x53EA;&#x80FD;&#x63A5;&#x6536;String&#x6216;Object&#x7C7B;&#x578B;&#x7684;&#x6CDB;&#x578B;  <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">"&#x3001;"<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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x53D8;&#x91CF;  <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">// &#x76F4;&#x63A5;&#x6253;&#x5370;  <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">// &#x6CDB;&#x578B;&#x7C7B;&#x578B;&#x4E3A;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">//&#x8FD9;&#x53E5;&#x4F1A;&#x51FA;&#x9519; 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">// &#x5728;&#x63A5;&#x53E3;&#x4E0A;&#x5B9A;&#x4E49;&#x6CDB;&#x578B;  <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">// &#x5B9A;&#x4E49;&#x62BD;&#x8C61;&#x65B9;&#x6CD5;&#xFF0C;&#x62BD;&#x8C61;&#x65B9;&#x6CD5;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x5C31;&#x662F;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x63A5;&#x53E3;&#x7684;&#x5B50;&#x7C7B;  <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">// &#x5B9A;&#x4E49;&#x5C5E;&#x6027;  <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">// &#x901A;&#x8FC7;&#x6784;&#x9020;&#x65B9;&#x6CD5;&#x8BBE;&#x7F6E;&#x5C5E;&#x6027;&#x5185;&#x5BB9;  <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">// &#x58F0;&#x660E;&#x63A5;&#x53E3;&#x5BF9;&#x8C61;  <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">"&#x6C64;&#x59C6;"<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">// &#x901A;&#x8FC7;&#x5B50;&#x7C7B;&#x5B9E;&#x4F8B;&#x5316;&#x5BF9;&#x8C61;  <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">"&#x5185;&#x5BB9;&#xFF1A;"<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">// &#x5728;&#x63A5;&#x53E3;&#x4E0A;&#x5B9A;&#x4E49;&#x6CDB;&#x578B;  <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">// &#x5B9A;&#x4E49;&#x62BD;&#x8C61;&#x65B9;&#x6CD5;&#xFF0C;&#x62BD;&#x8C61;&#x65B9;&#x6CD5;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x5C31;&#x662F;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">// &#x5B9A;&#x4E49;&#x6CDB;&#x578B;&#x63A5;&#x53E3;&#x7684;&#x5B50;&#x7C7B;  <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">// &#x5B9A;&#x4E49;&#x5C5E;&#x6027;  <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">// &#x901A;&#x8FC7;&#x6784;&#x9020;&#x65B9;&#x6CD5;&#x8BBE;&#x7F6E;&#x5C5E;&#x6027;&#x5185;&#x5BB9;  <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">// &#x58F0;&#x660E;&#x63A5;&#x53E3;&#x5BF9;&#x8C61;  <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">"&#x6C64;&#x59C6;"<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">// &#x901A;&#x8FC7;&#x5B50;&#x7C7B;&#x5B9E;&#x4F8B;&#x5316;&#x5BF9;&#x8C61;  <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">"&#x5185;&#x5BB9;&#xFF1A;"<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">// &#x53EF;&#x4EE5;&#x63A5;&#x6536;&#x4EFB;&#x610F;&#x7C7B;&#x578B;&#x7684;&#x6570;&#x636E;  <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">// &#x76F4;&#x63A5;&#x628A;&#x53C2;&#x6570;&#x8FD4;&#x56DE;  <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">// &#x5B9E;&#x4F8B;&#x5316;Demo&#x5BF9;&#x8C61;  <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">"&#x6C64;&#x59C6;"<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">// &#x4F20;&#x9012;&#x5B57;&#x7B26;&#x4E32;  <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">// &#x4F20;&#x9012;&#x6570;&#x5B57;&#xFF0C;&#x81EA;&#x52A8;&#x88C5;&#x7BB1;  <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">// &#x8F93;&#x51FA;&#x5185;&#x5BB9;  <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">// &#x8F93;&#x51FA;&#x5185;&#x5BB9;  <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">// &#x6307;&#x5B9A;&#x4E0A;&#x9650;&#xFF0C;&#x53EA;&#x80FD;&#x662F;&#x6570;&#x5B57;&#x7C7B;&#x578B;  <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">// &#x6B64;&#x7C7B;&#x578B;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x8986;&#x5199;Object&#x7C7B;&#x4E2D;&#x7684;toString()&#x65B9;&#x6CD5;  <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">//&#x65B9;&#x6CD5;&#x4E2D;&#x4F20;&#x5165;&#x6216;&#x8FD4;&#x56DE;&#x7684;&#x6CDB;&#x578B;&#x7C7B;&#x578B;&#x7531;&#x8C03;&#x7528;&#x65B9;&#x6CD5;&#x65F6;&#x6240;&#x8BBE;&#x7F6E;&#x7684;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#x51B3;&#x5B9A;  <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">// &#x6839;&#x636E;&#x4F20;&#x5165;&#x7684;&#x6570;&#x636E;&#x7C7B;&#x578B;&#x5B9E;&#x4F8B;&#x5316;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">// &#x5C06;&#x4F20;&#x9012;&#x7684;&#x5185;&#x5BB9;&#x8BBE;&#x7F6E;&#x5230;Info&#x5BF9;&#x8C61;&#x7684;var&#x5C5E;&#x6027;&#x4E4B;&#x4E2D;  <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">// &#x8FD4;&#x56DE;&#x5B9E;&#x4F8B;&#x5316;&#x5BF9;&#x8C61;  <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">// &#x6307;&#x5B9A;&#x4E0A;&#x9650;&#xFF0C;&#x53EA;&#x80FD;&#x662F;&#x6570;&#x5B57;&#x7C7B;&#x578B;  <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">// &#x6B64;&#x7C7B;&#x578B;&#x7531;&#x5916;&#x90E8;&#x51B3;&#x5B9A;  <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">// &#x8986;&#x5199;Object&#x7C7B;&#x4E2D;&#x7684;toString()&#x65B9;&#x6CD5;  <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">// &#x8BBE;&#x7F6E;&#x5185;&#x5BB9;  <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">"&#x6C64;&#x59C6;"<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">// &#x8BBE;&#x7F6E;&#x5185;&#x5BB9;  <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">// &#x8FD4;&#x56DE;&#x6CDB;&#x578B;&#x6570;&#x7EC4;  <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">// &#x63A5;&#x6536;&#x53EF;&#x53D8;&#x53C2;&#x6570;  <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">// &#x8FD4;&#x56DE;&#x6CDB;&#x578B;&#x6570;&#x7EC4;  <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">// &#x8F93;&#x51FA;  <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">"&#x63A5;&#x6536;&#x6CDB;&#x578B;&#x6570;&#x7EC4;&#xFF1A;"<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">"&#x3001;"<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">// &#x63A5;&#x6536;&#x4E24;&#x4E2A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">// &#x5C06;Info&#x4F5C;&#x4E3A;Demo&#x7684;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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&#x6307;&#x5B9A;&#x4E24;&#x4E2A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;  <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">"&#x6C64;&#x59C6;"<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">// &#x5B9E;&#x4F8B;&#x5316;Info&#x5BF9;&#x8C61;  <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">// &#x5728;Demo&#x7C7B;&#x4E2D;&#x8BBE;&#x7F6E;Info&#x7C7B;&#x7684;&#x5BF9;&#x8C61;  </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">"&#x5185;&#x5BB9;&#x4E00;&#xFF1A;"</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">"&#x5185;&#x5BB9;&#x4E8C;&#xFF1A;"</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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球