栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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  
{}  

以上就是小编为大家带来的Java泛型类型通配符和C#对比分析全部内容了,希望大家多多支持考高分网~

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号