Java,泛型类型通配符和C#对比

2014-11-23 22:15:20 · 作者: · 浏览: 0

c#的泛型没有类型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM并不支持泛型,只是语法糖,在编译器编译的时候都转换成object类型

类型通配符在java中表示的是泛型类型的父类

public void test(List c)  
{  
      for(int i = 0;i < c.size();i++)  
      {  
             System.out.println(c.get(i));  
      }  
}  
//创建一个List
    
     对象  
List
     
       strList = new ArrayList
      
       (); //将strList作为参数来调用前面的test方法 test(strList); 
      
     
    

编译上面的程序,test(strList) 处将发生编译错误,意味着不能把List 当成List 的子类. 这时候就需要使用类型通配符了,通配符是一个 号

上面的List换成List 就可以通过编译了


public void test(List
         c)  
{  
      for(int i = 0;i < c.size();i++)  
      {  
             System.out.println(c.get(i));  
      }  
}  

List 可以作为 List 的子类来使用, List 则可作为任何List 类型的父类使用,

如果只想作为List 的父类,而不是List 呢, 写成这样 List

在C#中约束泛弄类型是这样


class MyClass
        
           
    where T : class  
    where U : struct  
{}  
        

interface IMyInterface  
{  
}  
  
class Dictionary
        
           
    where TKey : IComparable, IEnumerable  
    where TVal : IMyInterface  
{  
    public void Add(TKey key, TVal val)  
    {  
    }  
}  
        

Java 中约束泛型通配符上限:

//表明T类型必须是Number类或其子类,并必须实现java.io.Serializable接口  
Public class Apple
        
           
{}  
        


<script type="text/java script">
<script type="text/java script">BAIDU_CLB_fillSlot("771048");
点击复制链接 与好友分享! 回本站首页
<script> function copyToClipBoard(){ var clipBoardContent=document.title + '\r\n' + document.location; clipBoardContent+='\r\n'; window.clipboardData.setData("Text",clipBoardContent); alert("恭喜您!复制成功"); }
分享到: 更多
<script type="text/java script" id="bdshare_js" data="type=tools&uid=12732"> <script type="text/java script" id="bdshell_js"> <script type="text/java script"> var bds_config = {'snsKey':{'tsina':'2386826374','tqq':'5e544a8fdea646c5a5f3967871346eb8'}}; document.getElementById("bdshell_js").src = "http://bdimg.share.baidu.com/static/js/shell_v2.js cdnversion=" + Math.ceil(new Date()/3600000)
您对本文章有什么意见或着疑问吗?请到 论坛讨论您的关注和建议是我们前行的参考和动力
上一篇: 设计模式之备忘录模式
下一篇: 最后一页
相关文章
面向对象编程:Java的简单数据类型
面向对象编程:Java复杂数据类型用法
<script type="text/java script">BAIDU_CLB_fillSlot("182716");
<script type="text/java script">BAIDU_CLB_fillSlot("517916");
图文推荐
<iframe src="http://www.2cto.com/uapi.php tid=297340&catid=85&title=SmF2YSy3utDNwODQzc2oxeS3 7rNQyO21LHI&forward=http://www.2cto.com/kf/201405/297340.html" width="100%" height="100%" id="comment_iframe" name="comment_iframe" frameborder="0" scrolling="no">
<script type="text/java script">BAIDU_CLB_fillSlot("771057");
排行
热门
<script type="text/java script">BAIDU_CLB_fillSlot("406189");
<script type="text/java script">BAIDU_CLB_fillSlot("703749");
<iframe frameborder="0" name="Iframe1" src="http://www.2cto.com/bbsdy/index.html" width="100%" height="200"> 您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
<script type="text/java script">BAIDU_CLB_fillSlot("182692");
文章
下载
读书
<script type="text/java script">BAIDU_CLB_fillSlot("771043");
<script type="text/java script"> <script language="java script" src="http://www.2cto.com/api.php op=count&id=297340&modelid=1"> <script type="text/java script">BAIDU_CLB_fillSlot("137946");
<script type="text/java script">BAIDU_CLB_fillSlot("333829");

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站<script type="text/java script"> var _bdhmProtocol = (("https:" == document.location.protocol) " https://" : " http://"); document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F1898984a3d796e86ad73ad1f4bc9f240' type='text/java script'%3E%3C/script%3E"));