zoukankan      html  css  js  c++  java
  • 【Java基础】1、java中的instanceof

    instanceof是Javaphp的一个二元操作符(运算符),和==,>,<是同一类东西。由于它是由字母组成的,所以也是Java的保留关键字。它的作用是判断其左边对象是否为其右边类的实例,返回boolean类型的数据。可以用来判断继承中的子类的实例是否为父类的实现。相当于c#中的is操作符。java中的instanceof运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。

    instanceof的使用

    一、

    比如我们写了一个处理账单的系统,其中有这样三个类:
    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) {
    //计算燃气账单
    }
    ...
    }
    这样就可以用一个方法处理两种子类。
    然而,这种做法通常被认为是没有好好利用面向对象中的多态性。其实上面的功能要求用方法重载完全可以实现,这是面向对象编程应有的做法,避免回到结构化编程模式。只要提供两个名字和返回值都相同,接受参数类型不同的方法就可以了:
    public double calculate(PhoneBill bill) {
    //计算电话账单
    }
    public double calculate(GasBill bill) {
    //计算燃气账单
    }
    所以,使用instanceof在绝大多数情况下并不是推荐的做法,应当好好利用多态。
     
     
    二、对象类型的强制转换
    例如:
    继承关系 class Manager extends Employee
    ----------------------------------------------------------
    public void doSomething(Employee e) {
    if ( e instanceof Manager){
    Manager m = (Manager) e ;
    }
    }
  • 相关阅读:
    img在src无效或者是空的时候出现边框
    console.log((!+[]+[]+![]).length)
    JQuery与zTree记录
    axis2框架实现webservice
    jsp页面常用代码
    使用MyEclipse实现通过数据库中表和hibernate生成实体类和映射配置文件
    PL/SQL Developer工具的使用简介
    有关静态代码块、代码块、构造方法执行顺序
    完全平方数的个数
    队列Q(排序方式)
  • 原文地址:https://www.cnblogs.com/wangzhongqiu/p/6287845.html
Copyright © 2011-2022 走看看