Java泛型通配符解决了泛型的许多诟病(如不能重载)
2015-04-26 20:08
302 查看
泛型:
型的,则不能重载这个方法,即:即使方法名相同,参数不同也不行,但是普通方法可以重载(同名不同参)
那个HTML本来打算过渡到XML的,且中间有个XHTML,但是迁移了10年还没过渡成功,结果HTML升级了,为HTML5,最终宣告迁移失败,还是用HTML吧。
其实在JDK1.5以后加入泛型,虽然可以在编译器检查,但是也引入了许多诟病的,其实在编译后,已经擦出了泛型,也就是说Java虚拟机不认识泛型的。
package Java基础增强; import java.util.ArrayList; import java.util.List; import org.junit.Test; public class Test2 { @Test public void fun1(){ Object[] objects = new Object[10]; List list = new ArrayList(); String[] strings = new String[10]; List<String> list2 = new ArrayList<String>(); Object[] objects2 = new String[10]; //下面这句编译不报错,但是运行包存储异常错误 objects2[0]=new Integer(100);//java.lang.ArrayStoreException: java.lang.Integer //下面这句编译报错 // List<Object> objects3 = new ArrayList<String>(); /* * 泛型引用和创建两端,给出的泛型变量必须一致 * 虚拟机根本就不检查泛型存不存在 */ } public void fun2(){ List<Integer> list = new ArrayList<Integer>(); this.print1(list);//1.print1方法只能是存储Integer不能使Object //========================== List<Integer> list2 = new ArrayList<Integer>(); print(list2); List<String> list3 = new ArrayList<String>(); print(list3); } //2.泛型的方法不能重载,因为泛型擦出后是一样的方法,也就是如果一个方法里的形参的泛 //型的,则不能重载这个方法,即:即使方法名相同,参数不同也不行,但是普通方法可以重载(同名不同参) public void print1(List<Integer> objects){ } public void print2(List<String> strings){ } //但是后来聪明的程序员使用通配符解决了这个泛型不能重载的问题 public void print(List<? extends Object> list){ } //但是下面两个普通方法可以重载 public void a(String s){ } public void a(int i){ } }泛型的方法不能重载,因为泛型擦出后是一样的方法,也就是如果一个方法里的形参的泛
型的,则不能重载这个方法,即:即使方法名相同,参数不同也不行,但是普通方法可以重载(同名不同参)
那个HTML本来打算过渡到XML的,且中间有个XHTML,但是迁移了10年还没过渡成功,结果HTML升级了,为HTML5,最终宣告迁移失败,还是用HTML吧。
其实在JDK1.5以后加入泛型,虽然可以在编译器检查,但是也引入了许多诟病的,其实在编译后,已经擦出了泛型,也就是说Java虚拟机不认识泛型的。
相关文章推荐
- 浅谈Java泛型通配符解决了泛型的许多诟病(如不能重载)
- Java泛型总结之定义泛型接口、类和类型通配符
- java泛型学习,泛型通配符的理解
- 解决WebService 中泛型接口不能序列化问题
- VC++6.0中利用友元函数进行重载时出现不能访问私有成员的解决办法
- 我的JDK是1.5得啊,我的maven2也是2.0.9的最新版本的,这个是底层接口的泛型,又不能删除,请教用过的高手怎样解决啊?
- 解决WebService 中泛型接口不能序列化问题
- 【环境配置】ubuntu中shell命令不能识别通配符的解决办法之一
- 【面向对象程序设计常见面试题】流运算符为什么不能通过类的成员函数重载?一般怎么解决?(7)
- Java泛型总结(集合泛型、方法泛型、通配符)
- 解决Struts2.5不能使用通配符方式动态方法调用
- 在jboss4.x.x中解决jsp不能使用泛型等jdk5新语法特性的问题
- java泛型笔记-为什么泛型类型不能是基本类型
- java泛型、通配符、泛型数据和方法的用例代码
- 解决expect下命令不能解析通配符*的问题
- Java泛型学习-泛型通配符的使用
- VC++ 6.0 右键 不能重载虚函数 显示"no virtual functions available to be overridden"问题的解决
- C++ 子类不能重载父类函数 解决方法
- 算法Sedgewick第四版-第1章基础-018一解决不能声明泛型数组的两咱方法(强转或反射)
- 解决JSP不能使用泛型问题