从数据库提取数据后,一般做法都是放到list中,其中泛用型是object,
要他转换为其他泛用型时,可以for(Object[] ** : list)或取出元素循环
我现在想问为什么object 不知道直接转换啊
比如
list<**> resList = super.execute(sql)
请各位指教
要他转换为其他泛用型时,可以for(Object[] ** : list)或取出元素循环
我现在想问为什么object 不知道直接转换啊
比如
list<**> resList = super.execute(sql)
请各位指教
最好的技术资料 http://www.webjar.cn/infor.htm
默认不就是object
class B extends A {
public static void main(String[] args){
A a = new B(); //正确。把一个B的对象赋给一个A的引用,属于向上转型,不需要强制转换就可以执行 B b = a; //错误。向下转型时,必须强制转换。改成 B b = (B)a ; 就可以正常编译了
}}
没说要声明object泛型
直接用for(**[] aa:list)也能定义的~
这样做是可以的,编译不会报错,可是当你用它的时候,去里面的对象的时候就会报错java.lang.ClassCastException: [Ljava.lang.Object;
Object是所有对象的父类,only说明说有对象都能够隐式的转换成Object类型
class A { }
class B extends A {
public static void main(String[] args){
A a = new B(); //正确。把一个B的对象赋给一个A的引用,属于向上转型,不需要强制转换就可以执行 B b = a; //错误。向下转型时,必须强制转换。改成 B b = (B)a ; 就可以正常编译了 Object o = new B(); //正确 B是Object的子类,可以隐式转换 B b1 = o; //错误,Object类型的数据转换成B类型的数据,属于将父类转换成子类的类型,必须加强制转换 B b2 = (B)o; //正确 //将一个父类转换成子类的时候,并不是什么时候都可以的
Object o3 = new Object();
B b3 = (B)o3; //编译正常,但运行时将抛出ClassCastException的异常。 //差不多就这样了,仔细比较下吧...尤其是红色的两条语句
}}
select new A (字段,............) 直接转换
解决问什么我这样写报错啊
网上有人用这样的hql解决过类型问题
有什么要注意的点吗
首先你要知道类型转换分两种形式,自动转换 和 强制转换 自动转换: 它的出发条件有两个。1.这2种类型是兼容的,2.目的类型数的范围比来源类型的大 就像int 转换成long 强制转换: 两种不兼容的类型进行转换,简单的说它会将转换类型的一些内容进行筛检,然后转换成目标类型。 大体就是这个意思了!我知道的就这些了!希望对你有帮助。
就像人可以直接当动物看待,因为人属于动物.但动物不能直接当人看,它是不是人需要鉴定一下才行,这个鉴定的过程就是强制转换在程序中,它不可能把list<object>里全当成你现在想要的类型,因为你可能大意在里面存储了不同类型的数据,它要直接当成某种类型势必会出错,