日期:2014-05-20 浏览次数:20782 次
class A { } class B extends A { } public class Test { public void main(String[] args) { A a = new A(); //a是A类型的变量,它引用一个A对象 B b = new B(); //b是B类型的变量,它引用一个B对象 A aa = b; //这里是向上转换,aa是A类型的变量,b是B类型的变量, //把b所引用的B类型的对象转换成A类型的对象,然后让aa引用这个对象 B bb = (B)aa; //这里是向下转换,bb是B类型的变量,aa是A类型的变量 //把aa所引用的A类型的对象转换成B类型的对象,然后让bb引用这个对象 } }
------解决方案--------------------
强制转换主要是为安全性考虑
------解决方案--------------------
因为java是强类型语言。所有的操作都是在特定类型上进行的。有的时候你获取的对象实例可能是一个对象的父类,并不包含你所需要的方法,但是子类里面却包含这个方法。这时候需要将父类强制转换为子类。再就是一些基本数值类型的数据。比如你的方法里面接受一个int型的参数,但是你手里的数字确是一个long型的。就需要强制转换一下,牺牲一些精度,可能造成数字的截断。