Java,泛型类型通配符和C#对比
来源:互联网 发布:淘宝女鞋店铺起名 编辑:程序博客网 时间:2024/05/29 08:09
c#的泛型没有类型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM并不支持泛型,只是语法糖,在编译器编译的时候都转换成object类型
类型通配符在java中表示的是泛型类型的父类
public void test(List<Object> c) { for(int i = 0;i < c.size();i++) { System.out.println(c.get(i)); } }
//创建一个List<String>对象 List<String> strList = new ArrayList<String>(); //将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<T, U> where T : class where U : struct {}
interface IMyInterface { } class Dictionary<TKey, TVal> where TKey : IComparable, IEnumerable where TVal : IMyInterface { public void Add(TKey key, TVal val) { } }
Java 中约束泛型通配符上限:
//表明T类型必须是Number类或其子类,并必须实现java.io.Serializable接口 Public class Apple<T extends Number & java.io.Serializable> {}
2 0
- Java,泛型类型通配符和C#对比
- Java 泛型类型通配符
- java泛型通配符和类型参数的范围
- java泛型通配符和类型参数的范围
- 初学Java,泛型类型通配符(三十七)
- java泛型与通配符类型参数
- java里程碑之泛型--类型通配符
- JAVA泛型和通配符
- Java泛型和通配符
- java泛型和通配符
- 泛型类型限定和通配符类型限定
- java入门教程-5.7java泛型通配符和类型参数的范围
- java泛型程序设计——通配符类型+通配符的超类型限定
- Java泛型总结之定义泛型接口、类和类型通配符
- 【java泛型】类型变量和通配符
- JAVA和C#对比
- Java和C#对比
- 深入理解泛型,类型通配符<?>,类型通配符上限,下限
- Trie树沉思录(1)
- 初学Java,各种容器性能对比
- sys/types.h,sys/stat.h与fcntl.h的作用
- 初学Java,Hashtable,HashMap,LinkedHashMap和Properties
- 初学Java,集合类的排序,查找,替换操作
- Java,泛型类型通配符和C#对比
- 【VOID】到哪里去。。
- A星寻路算法介绍
- Kernighan 评论 Pascal 语言的不足及一读者的不同意见
- Java 编程中异常处理的最佳实践
- Leftmost Digit (HDU 1060)
- 用PHP程序操作Memcache的前期工作准备
- Hadoop集群中的ssh无密码登录配置
- C# attribute和Java annotation……