goodluck 发表于 2010-2-20 14:28:52

Java基础:教你 Java 范型的两种写法

<p >1、原始的DAO层的类:<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>package com.test;public class UserDao {      public void add(User user){      //.保存实体的代码    }      public User get(int id) {      //.查询实体的代码      return null;    }}</ccid_code></pre></td></tr></table></ccid_nobr><br><p >其中,User类代码比较简单,如下:<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>package com.test;public class User {      private int id;    private String name;    public int getId() {      return id;    }    public void setId(int id) {      this.id = id;    }    public String getName() {      return name;    }    public void setName(String name) {      this.name = name;    }    }</ccid_code></pre></td></tr></table></ccid_nobr><br><p >2、我们将Dao层的类写成范型的形式,有两种写法:<p >其一、<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>package com.test;public class EntityDao1 {      public &lt;T&gt; void add(T t){      //查询实体的代码    }      public &lt;T,ID&gt; T get(ID id){      //.保存实体的代码      return null;    }}</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >范型一般用于方法的参数或者方法的返回值,上面的写法,我们要使范型有效,就须在方法的返回类型前加入强制范型转换。其中,add(T t)的参数用了范型,它的返回值是void型,就在void 前用强制类型转换,即加上<T>,强制转换成范型的形式,这样就不会报错了。而T get(ID id),由于它的参数和返回类型都用了范型,故要在返回类型T前强制转换,即<T,ID>。<p ><p >其二,范型也可写成以下形式:<p ><ccid_nobr><table width="400" border="1" cellspacing="0" cellpadding="2"bordercolorlight = "black" bordercolordark = "#FFFFFF" align="center"><tr><td bgcolor="e6e6e6" class="code" ><pre><ccid_code>package com.test;public class EntityDao2&lt;T,ID&gt; {      public void add(T t){      //..保存实体的代码    }      public T get(ID id){      //.查询实体的代码      return null;    }}</ccid_code></pre></td></tr></table></ccid_nobr><br><p ><p >这种形式,是把范型声明放在类中了,就不需每个方法都写强制类型转换。<p ><p >看实际需要,哪种方法方便就用哪种吧!范型给Java编程带来了许多方便,好好利用,会达到事半功倍的效果。<p ><P align=right></P><p align="center"></p></p>
页: [1]
查看完整版本: Java基础:教你 Java 范型的两种写法