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,对象类型
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
JAVA中实现原生的 socket 通信机制原理
2021-08-08 03:06:01
![](https://img.aspxhome.com/file/2023/4/60484_0s.png)
C#中的EventHandler观察者模式详解
2021-09-04 17:08:27
Android自定义SwipeRefreshLayout高仿微信朋友圈下拉刷新
2023-01-06 08:51:34
![](https://img.aspxhome.com/file/2023/0/139400_0s.gif)
Android微信右滑退出功能的实现代码
2021-12-26 07:15:48
![](https://img.aspxhome.com/file/2023/1/125541_0s.gif)
Android的OkHttp包处理用户认证的代码实例分享
2022-04-25 00:00:52
java实现小球碰撞功能
2023-04-05 19:22:41
![](https://img.aspxhome.com/file/2023/5/64105_0s.jpg)
全面了解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
![](https://img.aspxhome.com/file/2023/9/61249_0s.jpg)
Android中回调接口的使用介绍
2022-07-24 02:45:07
C# 位运算符整理
2022-12-28 15:59:35
Android中socket通信的简单实现
2023-01-21 12:24:22
![](https://img.aspxhome.com/file/2023/2/138802_0s.jpg)
JVM(Java虚拟机)简介(动力节点Java学院整理)
2023-11-25 06:12:12
![](https://img.aspxhome.com/file/2023/7/58867_0s.png)
Android 获得View宽高的几种方式总结
2021-11-12 05:06:49
![](https://img.aspxhome.com/file/2023/6/101846_0s.png)
Android开发之关于项目
2023-05-08 23:38:24
![](https://img.aspxhome.com/file/2023/7/138087_0s.png)
java实现数字转大写的方法
2021-11-04 21:39:45
spring boot加载第三方jar包的配置文件的方法
2023-03-02 22:45:13
Spring创建bean对象三种方式代码实例
2023-02-04 08:53:33
![](https://img.aspxhome.com/file/2023/6/70526_0s.png)
c# 实现控件(ocx)中的事件详解
2022-12-29 04:20:50
![](https://img.aspxhome.com/file/2023/5/88305_0s.jpg)
Android实现拍照截图功能
2023-06-21 04:43:23
![](https://img.aspxhome.com/file/2023/6/91046_0s.gif)