instanceof

判断某个对象是否是某个类的实例或者某个类的子类的实例。它的判断方式大概是这样的:

    public<T> boolean function(Object obj, Class<T> calzz) {
if (obj == null) {
return false;
}
try {
T t = (T) obj;
return true;
} catch (ClassCastException e) {
return false;
}
}

Class.equals()

这种方式比较的类型,一定是本身才返回true,子类或者父类都返回false;

        // B是A的子类,C是B的子类
B b = new B();
// false
System.out.println(b.getClass().equals(A.class));
// true
System.out.println(b.getClass().equals(B.class));
// false
System.out.println(b.getClass().equals(C.class));

PS:b.getClass().equals(A.class)等同于b.getClass() == A.class

Class.isInstance()

这个方法跟instanceof完全等价。

        // B是A的子类,C是B的子类
B b = new B();
// true
System.out.println(A.class.isInstance(b));
// true
System.out.println(B.class.isInstance(b));
// false
System.out.println(C.class.isInstance(b));

Class.isAssignableFrom

判断某个类是否是另一个类和其子类。

        // B是A的子类,C是B的子类
// false
System.out.println(B.class.isAssignableFrom(A.class));
// true
System.out.println(B.class.isAssignableFrom(B.class));
// true
System.out.println(B.class.isAssignableFrom(C.class));

Java对象类型的判断的更多相关文章

  1. jquery中关于对象类型的判断原理

    class2type[ core_toString.call(obj) ] jquery中关于对象类型的判断原理 jquery源码中关于类型判断的工具函数为type,调用方法为$.type()或者jQ ...

  2. Java对象的存活判断

    Java对象的回收是有依据的,普通的方式是计算法,比如被引用,对象计数器➕1,不被引用,➖1,回收的时候,发现是0则清除,但是不能解决两个对象互相被引用的情况,Java采用可达性分析,通过某个对象作为 ...

  3. java 对象类型的转换

    import com.java.charpt05.NewStr; class Quadrangle{    public static void draw(Quadrangle q)    {     ...

  4. Object.prototype.toString.call() 区分对象类型(判断对象类型)

    在 JavaScript 里使用 typeof 来判断数据类型,只能区分基本类型,即 “number”,”string”,”undefined”,”boolean”,”object” 五种.对于数组. ...

  5. Mysql和oracle字段类型与java对象类型对应表收藏

    https://blog.csdn.net/michaelzhou224/article/details/16827029 Mysql Oracle Java BIGINT NUMBER(19,0) ...

  6. Java对象的强、软、弱和虚引用原理+结合ReferenceQueue对象构造Java对象的高速缓存器

    //转 http://blog.csdn.net/lyfi01/article/details/6415726 1.Java对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变 ...

  7. Java对象的强、软、弱和虚引用

    本文介绍Java对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.Java对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象 ...

  8. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...

  9. Java对象的大小及应用类型

    基础类型数据的大小是固定的,对于非基本类型的java对象,其大小就值得商榷了.      在java中一个空Object对象的大小是8byte,这个大小只是保存堆中没有任何属性的对象的大小,看下面的语 ...

随机推荐

  1. 输入格式MultipleInput

    MultipleInput输入格式允许一个job的输入为多个文件夹下的文件(也就是多路径输入),并且不同文件夹下的文件可以实现不同的map逻辑,不过貌似必须使用相同的reduce逻辑. http:// ...

  2. sqlserver 调试WINDBG ---troubleshootingsql.com

    https://troubleshootingsql.com/tag/stack-dump/ Debugging that latch timeout Posted on August 26, 201 ...

  3. Debian、Ubuntu 源列表说明

    转载:http://forum.ubuntu.org.cn/viewtopic.php?t=366506 概貌: 源列表主文件为 /etc/apt/sources.list,另兼取 /etc/apt/ ...

  4. asp.net 二级域名(路由方式实现)

    自从微软发布 ASP.NET MVC 和routing engine (System.Web.Routing)以来,就设法让我们明白你完全能控制URL和routing,只要与你的application ...

  5. spring-data-jpa查询语句的书写实例小计

    //查询语句List<AuctionLot> alots = auctionLotRepository.findAllByAuctionIdAndAucIdIsNotNullAndIsOf ...

  6. WebLogic Server 多租户资源迁移

    重新建立一个动态集群,并启动,注意监听地址不能和其他集群重合 选择相应的资源组进行迁移, 迁移后,访问新的地址成功. 通过OTD负载均衡器访问原有的地址成功. 直接访问原来后台地址失败,表示资源确实已 ...

  7. 最短路径——Floyd,Dijkstra(王道)

    题目描述: 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要寻找最短的从商店到赛场的路线 ...

  8. Python Xpath 提取html整个元素(标签与内容)

    提取html某标签中文字时,文字中含有:“<sub>2</sub>O<sub>5</sub>”,导致提取的文字不符合预期. 解决方法: #coding= ...

  9. spring常用的一些注解以及注解注入总结

    常用的spring注解有如下几种: @Controller@Service@Autowired@RequestMapping@RequestParam@ModelAttribute@Cacheable ...

  10. Android自己定义button实现长按功能

    Android自己定义button实现长按功能 通过自己定义BUTTON,写一个LongTouchBtn类,在按下的时候运行onTouchEvent事件,通过这个事件使用回调函数来实现长按功能! XM ...