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

网友投稿 206 2023-07-02


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

c#的泛型没有类型通配符,原因是.net的泛型是CLR支持的泛型,而Jahttp://va的JVM并不支持泛型,只是语法糖,pSUnP在编译器编译的时候都转换成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就可以通过编译了

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

{}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java使用dbcp2数据库连接池
下一篇:微信开发 微信授权详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~