猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何确定对象的类?
如何确定对象的类?
IF类
B
和阶级
C
扩展类
A
我有一个类型的对象
B
或
C
,如何确定它的哪种类型是实例?
慕后森
浏览 271
回答 3
3回答
收到一只叮咚
if (obj instanceof C) { //your code }
0
0
0
素胚勾勒不出你
使用Object.getClass()..它返回对象的运行时类型。
0
0
0
慕田峪4524236
提出了多个正确的答案,但仍然有更多的方法:Class.isAssignableFrom()并简单地尝试转换对象(这可能会引发ClassCastException).可能的方式概述让我们总结一下测试对象的可能方法obj是类型的实例。C:// Method #1 if (obj instanceof C) ; // Method #2 if (C.class.isInstance(obj)) ; // Method #3 if (C.class.isAssignableFrom(obj.getClass())) ; // Method #4 try { C c = (C) obj; // No exception: obj is of type C or IT MIGHT BE NULL! } catch (ClassCastException e) { } // Method #5 try { C c = C.class.cast(obj); // No exception: obj is of type C or IT MIGHT BE NULL! } catch (ClassCastException e) { }差异null装卸有区别null不过,处理:在前两个方法中,表达式计算为false如果obj是null (null不是任何事物的实例)。第三种方法会抛出一个NullPointerException很明显。第四种和第五种相反的接受方法null因为null可以投到任何类型!记住:null 不是除了它以外的任何类型的实例。可以铸造任何类型的。注记Class.getName()不应用于执行“是-例如-”测试对象是否不是类型C但是它的一个子类,它可能有一个完全不同的名称和包(因此类名显然不匹配),但它仍然是类型的。C.出于同样的继承原因Class.isAssignableFrom()不是对称:obj.getClass().isAssignableFrom(C.class)会回来false如果obj是C.
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续