instanceof与class的等价性
来源:互联网 发布:unity3d卡牌游戏教程 编辑:程序博客网 时间:2024/05/16 05:03
class Base{};class Derived extends Base{};public class FamilyVsExactType { static void test(Object x){ System.out.println("Testing x ofType "+x.getClass()); System.out.println("x instanceof Base "+(x instanceof Base)); System.out.println("x instanceof Derived "+(x instanceof Derived)); System.out.println("Base.isInstance(x) "+Base.class.isInstance(x)); System.out.println("Derived.isInstance(x) "+Derived.class.isInstance(x)); System.out.println("=========================================================="); System.out.println("x.getClass()==Base.class "+(x.getClass()==Base.class)); System.out.println("x.getClass()==Derived.class "+(x.getClass()==Derived.class)); System.out.println("x.getClass().equals(Base.class )"+(x.getClass().equals(Base.class))); System.out.println("x.getClass().equals(Derived.class )"+(x.getClass().equals(Derived.class))); } public static void main(String[] args){ test(new Base()); test(new Derived()); }}
instanceof与isInstance结果相同,==和equals结果相同
instanceof 指的是“你是这个类吗,你是这个类的派生类吗”,而==比较实际的class对象,没有考虑继承
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。
例子如下:package com.instanceoftest; interface A{} class B implements A{ } class C extends B { } class instanceoftest { public static void main(String[] args){ A a=null; B b=null; boolean res; System.out.println("instanceoftest test case 1: ------------------"); res = a instanceof A; System.out.println("a instanceof A: " + res);//a是接口不是实例,返回false res = b instanceof B;//a是接口不是实例,返回false System.out.println("b instanceof B: " + res); System.out.println("/ninstanceoftest test case 2: ------------------"); a=new B(); b=new B(); res = a instanceof A; System.out.println("a instanceof A: " + res); res = a instanceof B; System.out.println("a instanceof B: " + res); res = b instanceof A; System.out.println("b instanceof A: " + res); res = b instanceof B; System.out.println("b instanceof B: " + res); System.out.println("/ninstanceoftest test case 3: ------------------"); B b2=(C)new C(); res = b2 instanceof A; System.out.println("b2 instanceof A: " + res); res = b2 instanceof B; System.out.println("b2 instanceof B: " + res); res = b2 instanceof C; System.out.println("b2 instanceof C: " + res); }}/*result:instanceoftest test case 1: ------------------a instanceof A: falseb instanceof B: falseinstanceoftest test case 2: ------------------a instanceof A: truea instanceof B: trueb instanceof A: trueb instanceof B: trueinstanceoftest test case 3: ------------------b2 instanceof A: trueb2 instanceof B: trueb2 instanceof C: true
阅读全文
0 0
- 14.5 instanceof 与 Class的等价性
- 14.5 instanceof 与 Class的等价性
- instanceof与class的等价性
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Java Class.isAssignableFrom(Class) 与 instanceof 的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字的区别
- 14章类型信息--注册工厂---instandceof与Class的等价性--反射
- Class.isAssignableFrom与 instanceof 区别
- java基础--------基本类型转换为字符串的互相转化
- WebSocket刨根问底(转)
- 解析json数组
- Gson
- Android TabLayout使用以及自定义TabLayout
- instanceof与class的等价性
- UVA12663 线段树+二分
- bzoj1260 [CQOI2007]涂色paint 区间DP
- Swift 算法练习
- JS中的同步和异步过程。
- tcp/ip<3>
- OpenStack源码分析 Neutron源码分析(一)-----------Restful API篇
- android 系统自带 回声消除
- 阿里巴巴Java开发手册学习笔记-编程规约