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

所属分类: 软件编程 / java 阅读数: 49
收藏 0 赞 0 分享

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

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

更多精彩内容其他人还在看

Java基于反射机制实现全部注解获取的方法示例

这篇文章主要介绍了Java基于反射机制实现全部注解获取的方法,结合实例形式分析了java反射机制获取注解的具体实现方法与操作注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java 信号量Semaphore的实现

这篇文章主要介绍了Java 信号量Semaphore的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

eclipse+maven+spring mvc项目基本搭建过程

这篇文章主要介绍了eclipse+maven+spring mvc项目基本搭建过程,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Spring boot集成swagger2生成接口文档的全过程

这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

Java冒泡排序法和选择排序法的实现

这篇文章主要介绍了Java冒泡排序法和选择排序法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Spring Cloud Alibaba教程之Sentinel的使用

这篇文章主要介绍了Spring Cloud Alibaba教程之Sentinel的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Josephus环的四种解法(约瑟夫环)基于java详解

这篇文章主要介绍了Josephus环的四种解法(约瑟夫环)基于java详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Java继承Thread类创建线程类示例

这篇文章主要介绍了Java继承Thread类创建线程类,结合实例形式分析了java线程操作相关使用技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

Java使用Callable和Future创建线程操作示例

这篇文章主要介绍了Java使用Callable和Future创建线程操作,结合实例形式分析了java使用Callable接口和Future类创建线程的相关操作技巧与注意事项,需要的朋友可以参考下
收藏 0 赞 0 分享

springBoot使用JdbcTemplate代码实例

这篇文章主要介绍了springBoot使用JdbcTemplate代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多