博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java,泛型类型通配符和C#对照
阅读量:6266 次
发布时间:2019-06-22

本文共 1174 字,大约阅读时间需要 3 分钟。

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<String> 当成List<Object> 的子类. 这时候就须要使用类型通配符了,通配符是一个?号

上面的List<Object>换成List<?>就能够通过编译了

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

List<String> 能够作为 List<?> 的子类来使用, List<?> 则可作为不论什么List 类型的父类使用,

假设仅仅想作为List<String>的父类,而不是List<int>呢,? 写成这样 List<?

extends String>

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

转载地址:http://qbdpa.baihongyu.com/

你可能感兴趣的文章
转:Tomcat 启动报错The APR based Apache Tomcat Native l...
查看>>
MyFirefox v2.6.2 - 打造自己的 Firefox 便携版
查看>>
各大类库的类工厂
查看>>
asp.net关于上传文件修改文件名的方法
查看>>
敏捷结果30天之第九天:使用必须、应该、可以来确定每天事情的优先级
查看>>
NFS在redhat中的一些简易应用
查看>>
mysqlbinlog查看编码问题
查看>>
进程通信(VC_Win32)
查看>>
MVP福利--利用Azure虚拟机玩Windows Server 2012
查看>>
Mac中将delete键定义为删除键
查看>>
python 函数关键参数
查看>>
ubuntu一键安装lamp
查看>>
漫谈 Clustering (1): k-means
查看>>
SQL Server 查询性能优化——索引与SARG(三)
查看>>
Oracle EBS:打开工作日历查看
查看>>
浅谈字节序(Byte Order)及其相关操作
查看>>
OSG闪存
查看>>
C#迭代器
查看>>
[Android] Change_xml.sh
查看>>
POJ-1925 Spiderman 动态规划
查看>>