Java对象类型的判断详解

作者:zeling1005 时间:2023-07-26 09:55:07 

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对象类型的判断详解整合,希望对大家有所帮助

来源:https://blog.csdn.net/u014532217/article/details/79254854

标签:Java,对象类型
0
投稿

猜你喜欢

  • JAVA中实现原生的 socket 通信机制原理

    2021-08-08 03:06:01
  • C#中的EventHandler观察者模式详解

    2021-09-04 17:08:27
  • Android自定义SwipeRefreshLayout高仿微信朋友圈下拉刷新

    2023-01-06 08:51:34
  • Android微信右滑退出功能的实现代码

    2021-12-26 07:15:48
  • Android的OkHttp包处理用户认证的代码实例分享

    2022-04-25 00:00:52
  • java实现小球碰撞功能

    2023-04-05 19:22:41
  • 全面了解Java中的内部类和匿名类

    2023-01-05 09:14:23
  • android开发仿ios的UIScrollView实例代码

    2023-08-07 01:55:20
  • java.text.DecimalFormat用法详解

    2022-09-30 03:02:27
  • Android中回调接口的使用介绍

    2022-07-24 02:45:07
  • C# 位运算符整理

    2022-12-28 15:59:35
  • Android中socket通信的简单实现

    2023-01-21 12:24:22
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

    2023-11-25 06:12:12
  • Android 获得View宽高的几种方式总结

    2021-11-12 05:06:49
  • Android开发之关于项目

    2023-05-08 23:38:24
  • java实现数字转大写的方法

    2021-11-04 21:39:45
  • spring boot加载第三方jar包的配置文件的方法

    2023-03-02 22:45:13
  • Spring创建bean对象三种方式代码实例

    2023-02-04 08:53:33
  • c# 实现控件(ocx)中的事件详解

    2022-12-29 04:20:50
  • Android实现拍照截图功能

    2023-06-21 04:43:23
  • asp之家 软件编程 m.aspxhome.com