博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
向上转型,向下转型
阅读量:7027 次
发布时间:2019-06-28

本文共 1096 字,大约阅读时间需要 3 分钟。

向上转型,就是将其他类型转对象转为Object类型,向下转型则相反。

例:

1 public class Test { 2    private Object b;//设置object类型成员变量 3    public Object getB(){ 4        return b; 5    } 6    public void setB(Object b){ 7        this.b = b; 8    } 9    public static void main(String [] args){10        Test test =   new Test();11        test.setB(new Boolean(true));//向上转型12        System.out.println(test.getB());13        test.setB(new Float(12.3));14        Float f = (Float)(test.getB());//向下转型15        System.out.println(f);16        test.setB(new Float(12.3));17        Integer f1 = ( Integer)(test.getB());//向下转型,抛出异常18        System.out.println(f1);19        20    }21 }

运行结果:

true

12.3
Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
at fanxing.Test.main(Test.java:19)

 在上述例子中,Test类中定义了私有的成员变量b,它的类型为Object类型,同时为其定义了相应的set与get方法,将new Boolean(true)对象作为setB()方法参数,由于setB()方法的参数类型为Object,这样就实现了“向上转型”,同时在调用getB()方法的时候,将getB()方法返回的Object对象以相应的类型返回,这就是“向下转型”,问题通常会出现在这里,因为“向上转型”是安全的,而“向下转型”操作时用错了类型,或者没有执行该操作,就会出现异常。

转载于:https://www.cnblogs.com/xyzyj/p/6194386.html

你可能感兴趣的文章
CodeForces 659F Polycarp and Hay
查看>>
Servlet客户请求的处理:HTTP请求报头HttpServletRequest接口应用
查看>>
ORACLE同义词使用
查看>>
pat 1014 1017 排队类问题
查看>>
Java常用系统变量收集
查看>>
常见负载均衡的优点和缺点对比(Nginx、HAProxy、LVS)
查看>>
Mac电脑C语言开发的入门帖
查看>>
上班两周
查看>>
洛谷P4242 树上的毒瘤
查看>>
导数和微分
查看>>
JQ实现树形菜单点击高亮
查看>>
函数动态参数
查看>>
const 与readonly的异同
查看>>
hostapd修改beacon帧和probe response帧
查看>>
ASP.NET-FineUI开发实践-4
查看>>
华为机试题 -- 明明的随机数
查看>>
前后端文件上传
查看>>
[蓝桥杯历届题目] 正六面体染色 ; 取字母组成串
查看>>
二分查找
查看>>
HDU ACM 1163 Eddy's digital Roots
查看>>