实例讲解instance of 运算符用法 - 极悦
首页 课程 师资 教程 报名

实例讲解instance of 运算符用法

  • 2020-10-27 17:54:32
  • 1164次 极悦

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吗?4大专业测评方法

代码逻辑 吸收能力 技术学习能力 综合素质

先测评确定适合在学习

在线申请免费测试名额
价值1998元实验班免费学
姓名
手机
提交