JAVA的instanceOf什么时候用啊
当你拿到一个对象的引用时(例如参数),你可能需要判断这个引用真正指向的类。所以你需要从该类继承树的最底层开始,
使用instanceof操作符判断,第一个结果为true的类即为引用真正指向的类。
class Person{}
class Student extends Person{}
class Postgraduate extends Student{}
class Animal{}
public class InstanceofTester {
public static void main(String[] args) {
instanceofTest(new Student());
}
public static void instanceofTest(Person p){
// 判断p的真正类型
if (p instanceof Postgraduate){
System.out.println("p是类Postgraduate的实例");
} else if(p instanceof Student){
System.out.println("p是类Student的实例");
} else if(p instanceof Person){
System.out.println("p是类Person的实例");
} else if(p instanceof Object) {
System.out.println("p是类Object的实例");
}
/*if(p instanceof Animal){//此错编译错误,所以做注释
System.out.println("p是类Animal的实例");
}*/
}
} 这个程序的输出结果是:p是类Student的实例 Person类所在的继承树是:Object<--Person<--Student<--Postgraduate。 这个例子中还加入一个Animal类,它不是在Person类的继承树中,所以不能作为instanceof的右操作数。
这个demo是错误的。
1.if...else if判断只要满足前面的条件就不会继续执行,即使后面为真,所以上面的输出的确只会有一个。
但是如果将判断全部改为if的话,以上面为例,就会输出:p是类Student的实例 p是类Person的实例
p是类Object的实例。因为if判断只要满足条件就会执行,不分先后。
2.我只想说作者的说法就是错误的,p 是引用, new + 构造方法才是实例,也可以叫做对象
3.instanceof是Java的一个二元操作符,和==,>,<是同一类东东。由于它是由字母组成的,所以也是Java的保留关键字。
它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean类型的数据。
http://rodney.cnblogs.com/archive/2005/08/18/instanceof.html
JAVA的instanceOf什么时候用啊的更多相关文章
- java中instanceof和getClass()的作用
初学者难免有点混淆java中instanceof和getClass()的作用, 下面就来一一讲解. 父类A: class A { } 子类B: class B extends A { } 构造对象 ...
- 深入Java关键字instanceof
深入Java关键字instanceof instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例. 举个例子: public interface ...
- Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法
ylbtech-Java-Runoob-高级教程-实例-方法:07. Java 实例 – instanceOf 关键字用法 1.返回顶部 1. Java 实例 - instanceof 关键字用法 ...
- Java关键字instanceof
深入Java关键字instanceof instanceof关键字用于判断一个引用类型变量所指向的对象是否是一个类(或接口.抽象类.父类)的实例. 举个例子: public interfa ...
- Java中instanceof和isInstance的具体区别
Java中instanceof和isInstance的具体区别 在Think in Java泛型这一章遇到这个问题,一些博客模糊提到了isInstance是instanceof的动态实现,查阅文档参考 ...
- Java 实例 - instanceof 关键字用法
Java 实例 - instanceof 关键字用法 instanceof 是 Java 的一个二元操作符,类似于 ==,>,< 等操作符. instanceof 是 Java 的保留关键 ...
- Java关键字——instanceof
Java中可以使用instanceof关键字判断一个对象到底是哪一个类的实例 格式:对象 instance 类 返回 boolean类型 通过子类实例化的对象同时是子类和父类的实例,无论是直接声明子类 ...
- Java中instanceof用法
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. 用法:resu ...
- Java里面instanceof怎么实现的
开始完全一头雾水呀,后面看了Java指令集的介绍,逐渐理解了. https://www.zhihu.com/question/21574535/answer/18998914 下面这个答案比较直白 你 ...
随机推荐
- Linux 的档案权限与目录配置
档案权限 Linux最优秀的地方之一,就在于他的多人多任务环境. 而为了让各个使用者具有较保密的档案数据,因此档案的权限 管理就变的很重要了. Linux一般将档案可存取的身份分为三个类别,分别是 o ...
- c# 模拟http post 带cookie
下面的代码是自动向cnblogs中的小组发帖.........注意小组ID,主题ID,小组类型 首先采用firebug分析到发帖时的post地址以及参数,其中在headers中包含了cookies,把 ...
- SQL Server触发器以及如何在SQL Server Manager中调试触发器
·只有inserted表有数据时,当前操作为insert:·inserted和deleted两张表都有数据时,当前操作为update:·只有deleted表有数据时,当前操作为delete. 1. C ...
- Soap UI 数据库脚本(转)
3:在SoapUI的Test Case中新建Groovy Script连接数据库 接口如下 def sql = Sql.newInstance( 地址, 用户名, 密码, 驱动 ) 实现样例如下: i ...
- IE9以下版本浏览器对HTML5新增标签不识别,导致CSS不起作用的问题
使用Javascript来使不支持HTML5的浏览器支持HTML标签.目前大多网站采用的这种方式(Bootcss官方例子也是如此). 在<head></head>标签内添加 2 ...
- iLearning D3.js 2.0 released
There are some great changes in 2.0 version. Console in tutorial: In previous version, there will be ...
- 【前端】CSS3实现弹出效果
36氪这个网站上的登录框弹出的时候挺帅气的,想知道它是怎么做的 .. 今天通过问新爷再加上自己琢磨琢磨写出一个小小Demo - 上代码 <!DOCTYPE html> <html&g ...
- 【Java基础】final关键字总结
Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...
- 为静态Checkbox动态地添加checked属性
1.ASP.NET HTML Code: 嵌套在repeater中 " ? "checked" : "" %> /> *** 关键代码: ...
- strip, 关于去除目标文件种的不必要信息
对于so动态库及可执行文件,可以直接调用不带参数的strip (-s, 即--strip-all)去除大多数不必要的信息.因为so库非常标准,所以strip之后仍然可以进行完美的动态连接:而可执行文件 ...