设为首页收藏本站language 语言切换
查看: 1277|回复: 0
收起左侧

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

[复制链接]
发表于 2010-2-20 14:54:56 | 显示全部楼层 |阅读模式
<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 >< align=right></P><p align="center"></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 22:05 , Processed in 0.082199 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表