java中instanceof和getClass()的区别分析
2014-02-27 17:32
507 查看
本篇文章介绍了,在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) => 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.
一个非常完美的equals方法的写法:
复制代码 代码如下: public boolean equals(Object otherObject) {
// a quick test to see if the objects are identical
if (this == otherObject) return true;
// must return false if the explicit parameter is null
if (otherObject == null) return false;
// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass()) return false;
// now we know otherObject is a non-null Employee
Employee other = (Employee) otherObject;
// test whether the fields have identical values
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
详细出处参考:http://www.jb51.net/article/36114.htm
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.
一个非常完美的equals方法的写法:
复制代码 代码如下: public boolean equals(Object otherObject) {
// a quick test to see if the objects are identical
if (this == otherObject) return true;
// must return false if the explicit parameter is null
if (otherObject == null) return false;
// if the classes don't match, they can't be equal
if (getClass() != otherObject.getClass()) return false;
// now we know otherObject is a non-null Employee
Employee other = (Employee) otherObject;
// test whether the fields have identical values
return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
}
详细出处参考:http://www.jb51.net/article/36114.htm
相关文章推荐
- Spring的AOP配置
- Spring定时任务的几种实现
- javamail开发(2)
- paip.批处理清理java项目冗余jar的方法
- paip.批处理清理java项目冗余jar的方法
- myeclipse中的jar包的引入与新建
- 整数分解 和 java
- Java项目打war包的方法
- 要点Java10 方法
- java连接mysql使用 ssh
- eclipse m2eclipse安装插件
- 由基本概念开始全面认识Java
- Java集合类--LinkedList
- STS中新建一个maven项目
- 关于java Exception error runtimeException 还有非runtimeException
- 银行业务调度系统-java并发程序模拟解决方案
- java.io.IOException: open failed: EINVAL (Invalid argument)
- Java 性能优化之 String 篇
- 利用JAXB进行xml和javabean之间转换
- 关于线程(二)线程的状态