随笔 - 0, 文章 - 75, 评论 - 0, 引用 - 0
数据加载中……

关于java的instanceof关键字

有人说instanceof这个java关键字没必要存在了,不过本人在实际项目中真正的应用过;

instanceof是java的二元操作符,是判断关键字左边对象是否是右边类的实例,然后返回一个布尔类型的结果;先看如下例子:


public static void main(String[] args) {

Integer value = 0;
 
if(value instanceof Object){
 
System.out.println("Integer is
Object!");
  }else{

  System.out.println("Integer is not
Object!");
  }

}

看这段代码,如果还不了解instanceof这个关键字也能猜出应该打印出“Integer is
Object!
”;那instanceof是如何判断的呢;

现在思考一下多态的概念,一个事物或实例有多种形态,显然一个Integer的实例同时也可以成为它是Object类型的,所以value是Object没错;那我们再来看看接口是不是也一样可以这样用呢:


public static void main(String[] args) {

List list = new ArrayList();

if(list instanceof
java.util.Collection){
 
System.out.println("List is
Collection!");
 
}else{
   
System.out.println("List is not Collection!");

}
}


现在定义了一个List接口对象,应用向上转型指向的ArrayList的实例;然后看list是否是java.util.Collection呢,我们知道Collection是线性集合的父接口,所以结果应该是“List is Collection!”;

综上,无论类还是接口都可以用instanceof这个关键字来判断,其实是不是也可以把这个关键字理解为多态的一个应用呢?

posted on 2012-04-22 15:13 hantai 阅读(324) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: