java 知识搜集
来源:互联网 发布:仙界网络直播间txt书包 编辑:程序博客网 时间:2024/06/08 16:08
我们都知道instanceof测试一个实例是不是一个类的实例。那么如果你认为一个Dog 的dog instanceof Object 会返回假,那你就大错特错了。对于所有的父类(super) 类,instanceof 测试都会返回真。
我们来看这个例子:
class Base{}class Ext1 extends Base{}class Ext2 extends Ext1{}public class TestCast { public static void main(String[] args) { Object c1 = new Ext1(); Object c2 = new Ext2(); if(c1 instanceof Base){ System.out.println("c1: " + c1 + ", is a Base class"); } if(c2 instanceof Base){ System.out.println("c2: " + c2 + ", is a Base class"); } if(c2 instanceof Ext1){ System.out.println("c2: " + c2 + ", is a Ext1 class"); } if(c2 instanceof Ext2){ System.out.println("c2: " + c2 + ", is a Ext2 class"); }}
结果是
c1: Ext1@12b6651, is a Base classc2: Ext2@4a5ab2, is a Base classc2: Ext2@4a5ab2, is a Ext1 classc2: Ext2@4a5ab2, is a Ext2 class
所有测试都为真。
那么 如果我想知道一个实例是否是一个类,而不是父类(super classes)的实例怎么办呢:那就是用0o.getClass().equals(Dog.class)测试:
我们再看例子:
class Base{}class Ext1 extends Base{}class Ext2 extends Ext1{}public class TestCast { public static void main(String[] args) { Object c1 = new Ext1(); Object c2 = new Ext2(); if(c2.getClass().equals(Base.class)){ System.out.println("c2: " + c2 + ", is of Ext1 class exactly"); } if(c2.getClass().equals(Ext1.class)){ System.out.println("c2: " + c2 + ", is of Ext1 class exactly"); } if(c2.getClass().equals(Ext2.class)){ System.out.println("c2: " + c2 + ", is of Ext2 class exactly"); } }}
结果是:
c2: Ext2@4a5ab2, is of Ext2 class exactly
我们来看这个例子:
class Base{}class Ext1 extends Base{}class Ext2 extends Ext1{}public class TestCast { public static void main(String[] args) { Object c1 = new Ext1(); Object c2 = new Ext2(); if(c1 instanceof Base){ System.out.println("c1: " + c1 + ", is a Base class"); } if(c2 instanceof Base){ System.out.println("c2: " + c2 + ", is a Base class"); } if(c2 instanceof Ext1){ System.out.println("c2: " + c2 + ", is a Ext1 class"); } if(c2 instanceof Ext2){ System.out.println("c2: " + c2 + ", is a Ext2 class"); }}
结果是
c1: Ext1@12b6651, is a Base classc2: Ext2@4a5ab2, is a Base classc2: Ext2@4a5ab2, is a Ext1 classc2: Ext2@4a5ab2, is a Ext2 class
所有测试都为真。
那么 如果我想知道一个实例是否是一个类,而不是父类(super classes)的实例怎么办呢:那就是用0o.getClass().equals(Dog.class)测试:
我们再看例子:
class Base{}class Ext1 extends Base{}class Ext2 extends Ext1{}public class TestCast { public static void main(String[] args) { Object c1 = new Ext1(); Object c2 = new Ext2(); if(c2.getClass().equals(Base.class)){ System.out.println("c2: " + c2 + ", is of Ext1 class exactly"); } if(c2.getClass().equals(Ext1.class)){ System.out.println("c2: " + c2 + ", is of Ext1 class exactly"); } if(c2.getClass().equals(Ext2.class)){ System.out.println("c2: " + c2 + ", is of Ext2 class exactly"); } }}
结果是:
c2: Ext2@4a5ab2, is of Ext2 class exactly
- java 知识搜集
- 知识搜集
- QTP知识搜集
- 各种搜集的知识。。。
- 浏览器引擎知识搜集
- mongDB--零碎知识搜集
- mongodb 知识大搜集
- html小白冷知识搜集
- `DevOps`相关知识搜集
- 编译器相关知识搜集整理
- Rails的一些知识搜集
- 多目视觉 知识搜集
- IT 博客知识搜集/备忘
- Java synchronized用法搜集
- Java网址搜集
- Java synchronized用法搜集
- Java synchronized用法搜集
- Java基础搜集
- linux内核调试(kgdb)
- USACO Section 1.4 Packing Rectangles (POJ 1169)搜索
- android 显示16色的图片:输入用颜色矩阵,显示对应的16色位图
- poj 3278 Catch That Cow BFS
- Log4j的用法总结
- java 知识搜集
- Html Input标签只能输入数字
- PHP解析JSON与XML(简介)
- Android系统文件夹结构解析
- IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)
- 编程呢真是坑爹
- 对于C++中类(class) 与结构(struct)的描述正确的为
- 代码即成本
- VB中HitTest方法的应用