我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019全年资料大全正版 > 泛型接口 >

JAVA的Collection接口中的方法containAll()在定义泛型形参时为什

归档日期:07-06       文本归类:泛型接口      文章编辑:爱尚语录

  JAVA的Collection接口中的方法containAll()在定义泛型形参时,为什么要使用通配符?

  JAVA的Collection接口中的方法containAll()在定义泛型形参时,为什么要使用通配符?

  比如这个方法我的想法是把?去掉,刚才测试过了,去掉之后,传入一个带泛型的实例运行起来是没有任何错误了,测试如下图所示,上面分别写了两个Apple类,其中的text方法中的形参,一...

  我的想法是把?去掉,刚才测试过了,去掉之后,传入一个带泛型的实例运行起来是没有任何错误了,测试如下图所示,

  上面分别写了两个Apple类,其中的text方法中的形参,一个同Collection接口中的containAll方法一样用了通配符,另一个没有使用,出现了警告,但用TestFanXing这个类去调用,运行结果是一样的,有没有通配符没有任何影响,那返回第一张图片去讲,为什么sun公司要在定义Collection接口中的方法时泛型形参要使用通配符去表示呢?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  //第一种方法是不推荐的,因为在支持泛型的地方没有指定泛型,会导致编译警告

  任何一本教科书上都会说明,Java的泛型是伪泛型,编译后泛型信息会消除掉。

  泛型符:T、E、V等,则是T代表一种类型,与?的区别就是,T所有的类型需要一致,而任何?则可以是任何类型。

  泛型是对类型做一种限制,java里的泛型是一种伪泛型,所以不指定泛型也没问题,但是不指定泛型就意味着有可能会出错,所以编译器才会给出警告。

  目的:无需开发人员手工编码进行类型强转,指定泛型,由编译器自动检测并帮你强转,这样不会出现强转时类型错误。

  新的JDK(好像是1.6以上版本吧),泛型的信息好像可以带到运行期的,而1.5的则不会吧,但依旧是一种伪泛型。

  展开全部用Collection? a的形参的函数就强制传进去的参数必须为泛型,不用就不强制。

本文链接:http://buggystordera.com/fanxingjiekou/750.html