Java instanceof和getClass()区别实例解析
对象 instanceof 类名,表示 对象是类名的实例,或者是其子类的实例,返回 true,否则返回 false。
对象.getClass() == 类名.class ,表示 只有对象是该类的实例,才返回 true
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 B => true o1.getClass().equals(A.class) => true o1.getClass().equals(B.class) => false o2.getClass().equals(A.class) => false // <===============HERE o2.getClass().equals(B.class) => true getClass() will be useful when you want to make sure your instance is NOT a subclass of the class you are comparing with.
例子:
class Base{ } class Derived extends Base{ } public class Hello { public static void main(String[] args) throws ParseException { Derived d = new Derived(); boolean bRet; bRet = d instanceof Derived;//true bRet = d instanceof Base;//true bRet = d.getClass() == Derived.class;//true // bRet = d.getClass() == Base.class;// 出错 bRet = d.getClass().equals(Base.class);//false } }
使用,重写equals
class Person{ private String id; private String name; //重写equals()方法,提供自定义的相等标准 public boolean equals(Object obj){ if(this == obj)//若为同一个对象 return true; //只有当obj是Person对象 if(null != obj && obj.getClass() == Person.class){ Person p = (Person)obj; if(id.equals(obj).getId() && ...){ return true; } } return false; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Java instanceof 运算符的使用方法
用法: (类型变量 instanceof 类|接口) 作用: instanceof 操作符用于判断前面的对象是否是后面的类,或者其子类.实现类的实例.如果是则返回true 否则就返回false. 注意: · instanceof前面的操作数的编译时类型要么与后面的类相同,要么与后面的类具有父子继承关系否则会引发编译错误. 一个简单的例子: 复制代码 代码如下: /** * instanceof 运算符 * @author Administrator * */ public class TestI
-
Java中的instanceof关键字在Android中的用法实例详解
在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念. instanceof大部分的概念是这样定义的:instanceof是Java的一个二元操作符,和==,>,<是同一类东西.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据.举个栗子: String s = "I AM an Object!"; boolean isObj
-
java 中的instanceof用法详解及instanceof是什么意思(推荐)
好,应大家的要求先给大家说下在JAVA程序中instanceof是什么意思 instanceof是Java的一个二元操作符,和==,>,<是同一类东东.由于它是由字母组成的,所以也是Java的保留关键字.它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据. instanceof运算符用法 运算符是双目运算符,左面的操作元是一个对象实例,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 说明: (1).一个类的实例包括本
-
java中instanceof与Class的等价性代码示例
本文研究的主要是java中instanceof与Class的等价性的相关问题,具体如下. java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 实例1(instanceof) 接口Person public interface Person { public void eat(); } 实现类People public class People implements
-
详谈Java中instanceof和isInstance的区别
一次性搞定instanceof和isInstance,instanceof和isInstance长的非常像,用法也很类似,先看看这两个的用法: obj.instanceof(class) 也就是说这个对象是不是这种类型, 1. 一个对象是本身类的一个对象 2. 一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3. 所有对象都是Object 4. 凡是null有关的都是false null.instanceof(class) class.inInstance(obj) 这个对象
-
Java关键字instanceof的两种用法实例
instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例. 举个例子: 复制代码 代码如下: public interface IObject { } public class Foo implements IObject{ } public class Test extends Foo{ } public class MultiStateTest { public static void main(String args[])
-
Java中instanceof关键字的用法总结
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法: result = object instanceof class 参数: Result:布尔类型. Object:必选项.任意对象表达式. Class:必选项.任意已定义的对象类. 说明: 如果 object 是 class 的一个实例,则 instanceof 运算符返回 true.如果 object
-
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 B => true o1.getClass().equals(A.class) => t
-
Java instanceof和getClass()区别实例解析
对象 instanceof 类名,表示 对象是类名的实例,或者是其子类的实例,返回 true,否则返回 false. 对象.getClass() == 类名.class ,表示 只有对象是该类的实例,才返回 true 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
-
java instanceof操作符使用及原理解析
这篇文章主要介绍了java instanceof操作符使用及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 a intanceof A:判断a是否是类A的的一个实例,返回值为boolean public class Person extends Object{} public class Student extends Person{} public class Graduate extends Person{} public clas
-
python数据类型判断type与isinstance的区别实例解析
在项目中,我们会在每个接口验证客户端传过来的参数类型,如果验证不通过,返回给客户端"参数错误"错误码. 这样做不但便于调试,而且增加健壮性.因为客户端是可以作弊的,不要轻易相信客户端传过来的参数. 验证类型用type函数,非常好用,比如 >>type('foo') == str True >>type(2.3) in (int,float) True 既然有了type()来判断类型,为什么还有isinstance()呢? 一个明显的区别是在判断子类. type(
-
JavaScript常用截取字符串的三种方式用法区别实例解析
stringObject.substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符. start必需.一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置. stop可选.一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1.如果省略该参数,那么返回的子串会一直到字符串的结尾. start从0开始 到stop(不包含stop)结束 不接受负的参数. stringObject.substr(start,
-
Java编程时间日期API实例解析
本文实例主要是关于Java8中的新特性,时间日期api的相关实例,具体如下: package com.effective.common.base.date; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.ZoneId; import
-
java new一个对象的过程实例解析
这篇文章主要介绍了java new一个对象的过程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话new一个对象就可以分为两个过程:加载并初始化类和创建对象. 一.类加载过程(第一次使用该类) java是使用双亲委派模型来进行类的加载的,所以在
-
Java lock同步锁使用实例解析
这篇文章主要介绍了Java lock同步锁使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现,synchronized是在JVM层面上实现的,不但可以通过一些监控工具监控synchronized的锁定,而且在代码执行时出现异常,JVM会自动释放锁定,但是使用Lock则不行,lock是通过代码实现的,要保证锁定一定会被释放,就
-
Java等待唤醒机制原理实例解析
这篇文章主要介绍了Java等待唤醒机制原理实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 线程的状态 首先了解一下什么是线程的状态,线程状态就是当线程被创建(new),并且启动(start)后,它不是一启动就进入了执行状态(run),也不是一直都处于执行状态. 这里说一下Java 的Thread类里面有一个State方法,这个方法里面涵盖了6种线程的状态,如下: public enum State { // 尚未启动的线程的线程状态.
-
Java多线程状态及方法实例解析
这篇文章主要介绍了Java多线程状态及方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 首先介绍线程的五种状态: 新生态:New Thread() 就绪态:准备抢CPU时间片 运行态:抢到了CPU时间片 阻塞态:放弃已经抢到的CPU时间片,且暂时不参与争抢 死亡态:Run运行完了之后 接下来介绍三种方法:线程的阻塞,线程的优先级设置,线程的礼让 public class MutliThreadDemo4 { public static
-
JAVA面向对象 封装原理及实例解析
这篇文章主要介绍了JAVA面向对象 封装原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 抽象 去定义一个类的时候,实际上就是把一类事物的共有的属性和行为提取出来,形成一个物理模型(模板).这种研究问题的方法称为抽象. 修饰符 Java提供四种访问控制修饰符号控制方法和变量的访问权限: Ⅰ.公开级别:用pubilc修饰,对外公开 Ⅱ.受保护级别:用protected修饰,对子类和同一个包中的类公开 Ⅲ.默认级别:没有修饰符号,向同一
随机推荐
- Mysql中FIND_IN_SET()和IN区别简析
- jquery弹出框的用法示例(一)
- AngularJS中update两次出现$promise属性无法识别的解决方法
- Android NavigationView头部设置监听事件
- 在window.setTimeout方法中传送对象
- js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
- JS按字节截取字符长度实例
- apache mysql php 源码编译使用方法
- JS两种定义方式的区别、内部原理
- docker常用命令总结之安装、镜像、容器基本操作
- 远程连接mysql错误代码1130的解决方法
- jquery keypress,keyup,onpropertychange键盘事件
- 谈谈对JavaScript原生拖放的深入理解
- JavaScript中圆括号()和方括号[]的特殊用法疑问解答
- 详解如何在 CentOS7.0 上搭建DNS 服务器
- Android 开发实例简单涂鸦板
- 浅谈普通for循环遍历LinkedList弊端
- 区分Java的方法覆盖与变量覆盖
- Android中封装RecyclerView实现添加头部和底部示例代码
- Node.js 中使用 async 函数的方法