Java instead of 用法_实例讲解instance of 运算符用法
instanceof 是 Java 语言中的一个二元操作符,和 = =、>、< 等是同一类元素。由于 instanceof
是由字母组成的,所以它也是Java的保留关键字。Java中 instance of 运算符用法是学习instance of 运算符的关键所在。
1.instanceof 的作用是测试它左边的对象是否是它右边类的实例,然后返回一个 boolean 类型的
instanceof。请看下面的代码。
String s = "I AM an Object!";
boolean isObject = s instanceof Object;
上述代码声明了一个 String 型对象引用,指向一个 String 型对象,然后用 instanceof 来测试它所指向的对象是否是 Object
类的一个实例。因为这是真的,所以返回结果 true,也就是 isObject 的值为 true。
比如我们在编写一个处理账单系统时,其中有如下 3 个类。
public class Bill {//省略细节}
public class PhoneBill extends Bill {//省略细节}
public class GasBill extends Bill {//省略细节}
在具体处理程序中有一个专门的方法来接受一个 Bill 类型的对象,这样可以计算金额。假设两种账单的计算方法不同,而传入的 Bill
对象可能是两种中的任何一种,因此需要使用 instanceof 来判断。
public double calculate(Bill bill) {
if (bill instanceof PhoneBill) {
//计算电话账单
}
if (bill instanceof GasBill) {
//计算燃气账单
}
...
}
这样就可以用一个方法处理两种子类。
2.然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象变成应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
public double calculate(PhoneBill bill) {
//计算电话账单
}
public double calculate(GasBill bill) {
//计算燃气账单
}
所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
3.同时也可以用instance of 来判断某个对象是否是某个Class类的实例。
用法:
boolean result = object instanceof class
参数:
result :boolean类型。
object :必选项。任意对象表达式。
class:必选项。任意已定义的对象类。
说明:
如果该object 是该class的一个实例,那么返回true。如果该object
不是该class的一个实例,或者object是null,则返回false。
例子:
package com.instanceoftest;
interface A { }
class B implements A { } //B是A的实现
class C extends B { } //C继承B
class D { }
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 instanceof A:false
res = b instanceof B;
System.out.println("b instanceof B: " + res); // b instanceof B: false
System.out.println("\ninstanceoftest test case 2: ------------------");
a = new B();
b = new B();
res = a instanceof A;
System.out.println("a instanceof A: " + res); // a instanceof A:true
res = a instanceof B;
System.out.println("a instanceof B: " + res); // a instanceof B:true
res = b instanceof A;
System.out.println("b instanceof A: " + res); // b instanceof A:true
res = b instanceof B;
System.out.println("b instanceof B: " + res); // b instanceof B:true
System.out.println("\ninstanceoftest test case 3: ------------------");
B b2 = new C();
res = b2 instanceof A;
System.out.println("b2 instanceof A: " + res); // b2 instanceof A:true
res = b2 instanceof B;
System.out.println("b2 instanceof B: " + res); // b2 instanceof A:true
res = b2 instanceof C;
System.out.println("b2 instanceof C: " + res); // b2 instanceof A:true
System.out.println("\ninstanceoftest test case 4: ------------------");
D d = new D();
res = d instanceof A;
System.out.println("d instanceof A: " + res); // d instanceof A:false
res = d instanceof B;
System.out.println("d instanceof B: " + res); // d instanceof B:false
res = d instanceof C;
System.out.println("d instanceof C: " + res); // d instanceof C:false
res = d instanceof D;
System.out.println("d instanceof D: " + res); // d instanceof D:true
}
}
以上就是在Java语言中,instead
of运算符的用法实例,我们可以仔细剖析,认真求证,学习其中的精髓。然后,结合本站的关系运算符教程里对instead
of运算符的详细讲解,一定能够完全掌握instead of 运算符的相关知识!
Java instead of 用法_实例讲解instance of 运算符用法相关推荐
- java自旋锁使用_实例讲解Java 自旋锁
一直以来不是怎么清楚自旋锁,最近有点时间,好好的学习了一下: 所谓的自旋锁在我的理解就是多个线程在尝试获取锁的时候,其中一个线程获取锁之后,其他的线程都处在一直尝试获取锁的状态,不会阻塞!!!那么什么 ...
- java pdf添加图章_实例讲解Java处理PDF图章的方法
图章(印章)是一种在合同.票据.公文等文件中表明法律效应.部门机关权威的重要指示物,常见于各种格式的文件.文档中.对于纸质文档可以手动盖章,但对于电子文档,则需要通过特定的方法来实现.本篇文档分享通过 ...
- php中的ltrim,PHP中ltrim()函数的用法与实例讲解
PHP中ltrim()函数的用法与实例讲解 PHP ltrim() 函数 实例 移除字符串左侧的字符: $str = "Hello World!"; echo $str . &qu ...
- 编程python爬取网页数据教程_实例讲解Python爬取网页数据
一.利用webbrowser.open()打开一个网站: >>> import webbrowser >>> webbrowser.open('http://i.f ...
- core 实例化接口_实例讲解Springboot整合MongoDB进行CRUD操作的两种方式
1 简介 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库.两者在分布式.微服务架构中使用率极高,本文将用实例介绍如何在Springboot中整合Mon ...
- python 系统管理_实例讲解python用户管理系统
本文主要为大家分享一篇python用户管理系统的实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装 ...
- python求三个整数最大值_实例讲解Python中整数的最大值输出
实例讲解Python中整数的最大值输出 在Python中可以存储很大的值,如下面的Python示例程序: x = 1000000000000000000000000000000000000000000 ...
- redis序列化_实例讲解Springboot以Template方式整合Redis及序列化问题
1 简介 之前讲过如何通过Docker安装Redis,也讲了Springboot以Repository方式整合Redis,建议阅读后再看本文效果更佳: (1) Docker安装Redis并介绍漂亮的可 ...
- java 内部类 加载_举例讲解Java的内部类与类的加载器
内部类 class A { //Inner1 要在 A 初始化后 才能使用,即要被A的对象所调用 class Inner1 { int k = 0; // static int j = 0; //A加 ...
- python中能够处理的最大整数是_实例讲解Python中整数的最大值输出
在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...
最新文章
- java异常处理之throw, throws,try和catch
- caffe web demo 搭建
- 爬虫入门五(Phantomjs和selenium)
- matlab工具箱作用简介,Matlab各工具箱功能简介(部分)
- Java架构师成长之道之Java数据存储
- 【VRPSD】基于matlab蚁群算法求解运钞车路径规划问题【含Matlab源码 1511期】
- Kettle Spoon入门学习
- win10激活时间(win10激活时间查询)
- python gps显示_MicroPython-GPS教程之TPYBoardv702控制5110显示当前经纬度
- 【托业】【新托业TOEIC新题型真题】学习笔记11-题库六-P7
- L44. 通配符匹配
- differential privacy 学习笔记(一)
- 【程序设计】浅拷贝与深拷贝
- java线性规划计算最优解算法
- PyQT从入门到出门-001
- 研究生学人工智能有未来吗?点击快速了解就业前景
- odroidxu4linux,2019年值得期待的5个树莓派替代品
- 使用74LS161设计任意进制计数器
- 电磁兼容入门篇之基础知识
- Kids and COVID: why young immune systems are still on top