Java泛型是假泛型,好烦这个东西

今天新来的小伙子让我帮忙看一个bug,在for遍历List时提示ClassCastException。

伪代码  for(Order order : model.getOrderList)...

debug之后发现OrderList里放的是Object[]数组,于是追到了注入的位置

orderList = (ArrayList<OrderList>) query.list(); 这里强转失败了,但没有报错。

泛型擦除等未完待续。。。

时间: 2024-10-01 00:23:17

Java泛型是假泛型,好烦这个东西的相关文章

Java基础笔记:泛型

内容:Java中的泛型 优秀文章:新浪博客-海洋星球:http://blog.sina.com.cn/s/blog_44c1e6da0100cus3.html书籍:细说Java.疯狂Java讲义 说明:泛型是于Java SE1.5添加的新特性:泛型的本质是参数化类型,简单来说就是将泛型看作一个或多个参数,使用这个参数的代码片段可以由任何具体类类型的参数来替换:泛型的参数类型只能是类类型,不能是简单类型(简单类型是指不能再简化的编程语言内置数据类型,java中有实数-float-double.整数

Java集合框架之泛型

广州疯狂软件教育Java培训,iOS培训分享 泛型:1.5版本以后出现的新特性.用于解决安全问题,是一个安全机制. 好处: 1.将运行时期出现问题ClassCaseException,转移到了编译时期. 2.方便与程序员解决问题.让运行时事情减少,安全. 3.避免了强制类型转换 泛型格式:通过<>来定义要操作的引用数据类型 什么时候写泛型: 在集合框架中和常见 只要见到<>就要定义泛型 import java.util.Comparator; import java.util.It

恶补java(十)---泛型与集合的再学习

其余的就不多说了,一切都在代码中 package com.gc.generic; /** * JDK5 之前集合对象使用问题: * 1.向集合添加任何类型对象 * 2.从集合取出对象时,数据类型丢失,使用与类型相关方法,强制类型转换 * 存在安全隐患 * * ***************************** * * JDK5中的泛型:允许程序员使用泛型技术限制集合的处理类型 * List<String> list=new ArrayList<String>(); * 从而

Java学习笔记_26_泛型概述

                                                               泛型概述 在Java中存入容器中的对象再取出时需要转换类型,因为对象加入容器会被转换成Object类型,而取出时要转换成实际类型.但向  下类型转换都 是存在潜在危险的,因此应该尽量避免它们.  Java的泛型: 所谓泛型就是在定义(类.方法.形参.成员变量等等)的时候,指 定它们为通用类型,也就是数据类型可以是任意类型. 泛型为提高大型程序的类型安全和维护带来了很大的潜

Java中HashMap(泛型嵌套)的遍历

//Studnet package yzhou.gen03; public class Student<T> { private T score; public T getScore() { return score; } public void setScore(T score) { this.score = score; } } //BjStu package yzhou.gen03; public class Student<T> { private T score; pub

Java泛型 VS C#泛型 (伪泛型 VS 真泛型)

一.泛型的本质 泛型是参数化类型的应用,操作的数据类型不限定于特定类型,可以根据实际需要设置不同的数据类型,以实现代码复用. 二.Java泛型 Java 泛型是Java1.5新增的特性,JVM并不支持. 实现原理:Java源代码里面类型提供实现泛型功能,而编译后Class文件类型就变成原生类型(即类型被擦除掉),而在引用处插入强制类型转换以实现JVM对泛型的支持.本质是Java泛型只是Java提供的一个语法糖,底层 的JVM并不提供支持,Java中的泛型属于伪泛型. 但是编译后的字节码通过反射后

JAVA基础_自定义泛型

泛型的来源 在Java中,泛型借鉴了C++的模版函数,从而引入了泛型. C++泛型 int add(int x,int y){ return x + y; } float add(float x.float y){ return x + y; } double add(double x,double y){ return x + y; } // 泛型函数对上面的整数,浮点数的抽象和实现 template<class T> T add(T x,T y){ return x + y; } 自定义泛

JavaSE入门学习40:Java集合框架之泛型

一Java泛型 JDK 4.0以前装入集合的类型不明确,也就是说集合中的元素,可以是任意类型的对象(对象的引用),如果把某个 对象放入集合,则会忽略它的类型,而把它当做Object处理,从而失去自己的实际类型.从集合中取出时往往需要转 型,效率低,容易产生错误.JDK 5.0泛型指的是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类 型检查,也可以直接按指定类型获取集合元素. 如果我们只写一个排序方法,就能够对整型数组.字符串数组甚至支持排序的任何类型的数组进行排序,这该多 好啊.Ja

I学霸官方免费教程三十四:Java集合框架之泛型集合

泛型集合 泛型集合不是指某种集合,而是指在集合的基础上增加了泛型. 泛型集合中,一旦传入了泛型参数"类A":则只能向这个集合中添加类A或类A子类的对象,不能添加其他对象了. 从泛型集合中获取对象时,对象的类型是类A,而不是Object类型的对象了. 泛型List 例如:上面说到的两种List集合,都可以加入泛型 package collection.list.arrayList; import java.util.ArrayList; import java.util.List; /*