java 的instanceof方法的使用

java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例。instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例。
用法:
result = object instanceof class
参数:
Result:布尔类型。
Object:必选项。任意对象表达式。
Class:必选项。任意已定义的对象类。
说明:
如果 object 是 class 的一个实例,则 instanceof 运算符返回 true。如果 object 不是指定类的一个实例,或者 object 是 null,则返回 false。

package first;
//: initialization/PassingThis.java
//this关键字对于当前对象传递给其他方法也很有用
class Person {
//  public void eat(Apple apple) {
//    Apple peeled = apple.getPeeled();
//    System.out.println("Yummy");
//  }
    Apple apple;
    Orange orange;
    public void eat(Object object){  //instanceof方法和下面的object.getClass().getName()的方法效果一样。
//        if(object instanceof Apple){
        System.out.println(object.getClass().getName());
        if(object.getClass().getName().equals("first.Apple")){
            apple = ((Apple) object).getPeeled();
            System.out.println("我想要的小苹果 :" + apple);
        } else if(object instanceof Orange){
            orange = ((Orange) object).getPeeled();
            System.out.println("我想要的小橙子 :" + orange);
        } else {
            System.out.println("O.M.G,I have Nothing!");
        }
    }
}
/*
 * 是一个外部的工具方法,将执行由于某种原因而必须放在Apple外部的操作。(也许是因为该外部方法要应用于许多不同的类
 * 而你却不想重复这些代码。比如,我可以扩展人不仅可以吃苹果还可以吃橙子。我们可以先种一颗橙子。
 */
class Peeler {
  static Apple peel(Apple apple) {

      System.out.println("种下一颗小苹果 :" + apple);
    // ... remove peel
    return apple; // Peeled
  }
  static Orange peel(Orange orange){
      System.out.println("种下一颗小橙子: " + orange);
    return orange;
  }
}

class Apple {
  Apple getPeeled() {
      return Peeler.peel(this);
    }
}

class Orange {
    Orange getPeeled(){
        return Peeler.peel(this);
    }
}
public class PassingThis {
  public static void main(String[] args) {
    new Person().eat(new Apple());
    new Person().eat(new Orange());
  }
} 
时间: 2024-08-30 13:57:56

java 的instanceof方法的使用的相关文章

Java中isAssignableFrom()方法与instanceof()方法用法

一句话总结: isAssignableFrom()方法是从类继承的角度去判断,instanceof()方法是从实例继承的角度去判断. isAssignableFrom()方法是判断是否为某个类的父类,instanceof()方法是判断是否某个类的子类. 1. Class.isAssignableFrom()方法 Class.isAssignableFrom()是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的子类或接口.   格式为: Class1.isAssignable

java中instanceof和getClass()的作用

初学者难免有点混淆java中instanceof和getClass()的作用,  下面就来一一讲解.    父类A: class A { }     子类B: class B extends A { }      构造对象 Object o1 = new A(); Object o2 = new B(); 一.instanceof     演示一: 1.o1 instanceof A => true  2.o1 instanceof B => false  3.o2 instanceof A

JS和JAVA使用JSON方法解析

JS和JAVA使用JSON方法解析 一.JS部分================== 将json字符串转换为json对象的方法.在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键. 例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对象: var str2 = {

(5)java基础知识-方法、关键字、命名规则、注释

一.方法 方法相当于功能的实现. public   static   int          max    (int num1, int num2)   {....................} 修饰符     返回类型   方法名   方法(参数可以有N个) 方法体 修饰符: 修饰符是可选的,告诉编译器如何调用该方法.这定义了该方法的访问类型. static: 类方法,可通过类名直接调用 返回类型:方法可以返回一个值.returnValueType的值是方法返回的数据类型.有些方法没有返

java中instanceof和getClass()的区别分析

本篇文章介绍了,在java中instanceof和getClass()的区别分析.需要的朋友参考下 class A { } class B extends A { } Object o1 = new A();  Object o2 = new B(); o1 instanceof A => true  o1 instanceof B => false  o2 instanceof A => true // <================ HERE  o2 instanceof

java常用工具方法2

/* * Copyright 2005 Joe Walker * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LI

Java中的方法重写 与 final关键字

Java中的方法重写 与 final关键字 以下程序是否存在错误? class Base { private final void method() { System.out.println("In Base..."); } } class Sub extends Base { public void method() { System.out.println("In Sub..."); } } 答案 正确的. 使用final关键字可以声明类.成员变量和成员方法,一

1.28 Java基础总结 ①方法重载②构造方法

1.28 Java基础总结 ①方法重载②构造方法 一.方法的重载在同一个类中,方法名相同,形参列表不同访问修饰符.返回类型和是否重载无关:按顺序对应的形参列表类型不同即可 二.构造器在类创建一个实例时被调用,构造方法只能用new关键字调用目的:初始化实例,初始化类属性(0,0.0,null,false)无返回值,和类名一致,用来构造对象作用:为对象分配内存, 创建并初始化成员变量(通过类创建,所以可以在static方法中调用构造方法) 返回引用,引用.属性:引用.方法(所以无返回值) 三.构造方

java 安全验证方法

输入数据验证:虽然为方便用户而在客户端层上提供数据验证,但仍必须使用 Servlet 在服务器层上执行数据验证.客户端验证本身就不安全,因为这 些验证可轻易绕过,例如,通过禁用 Javascript. 一份好的设计通常需要 Web 应用程序框架,以提供服务器端实用程序例程,从而验证以下内容:[1] 必需字段[2] 字段数据类型(缺省情况下,所有 HTTP 请求参数都是"字符串")[3] 字段长度[4] 字段范围[5] 字段选项[6] 字段模式[7] cookie 值[8] HTTP 响