Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字有什么区别

转载 2007年09月14日 15:50:00
       isAssignableFrom 是用来判断一个类Class1和另一个类Class2是否相同或是另一个类的超类或接口。
        通常调用格式是
        Class1.isAssignableFrom(Class2)
        调用者和参数都是 java.lang.Class 类型。
        而 instanceof 是用来判断一个对象实例是否是一个类或接口的或其子类子接口的实例。
        格式是: oo instanceof TypeName
        第一个参数是对象实例名,第二个参数是具体的类名或接口名,例如 String,InputStream。
        用下面的代码进行测试,我们就可以发现他们的不同之处
        /*
        * Created on 2005-1-29
        */
        package lang.test;
        import junit.framework.TestCase;
        /**
        * <title> LangTest
        * <description>
        * <company>
        * @version
        * @since
        *
        *2005-1-29 16:19:28
        */
        public class LangTest extends TestCase
        {
        /**
        * Constructor for LangTest.
        * @param name
        */
        public LangTest(String name)
        {
        super(name);
        }
        public void testIsAssignedFrom1()
        {
        assertTrue( String.class.isAssignableFrom(Object.class));
        }
        public void testIsAssignedFrom2()
        {
        assertTrue( Object.class.isAssignableFrom(Object.class));
        }
        public void testIsAssignedFrom3()
        {
        assertTrue( Object.class.isAssignableFrom(String.class));
        }
        public void testInstanceOf1()
        {
        String ss = "";
        assertTrue( ss instanceof Object);
        }
        public void testInstanceOf2()
        {
        Object o = new Object();
        assertTrue( o instanceof Object);
        }
        } 

Java instanceof 关键字是如何实现的?

HotSpot VM具体使用了长度为8的缓存数组,记录某个类从继承深度0到7的超类。HotSpot把类继承深度在7以内的超类叫做“主要超类型”(primary super),把所有其它超类型(接口、数...
  • a860MHz
  • a860MHz
  • 2016年08月01日 23:33
  • 1012

Java中的instanceof关键字在Android中的用法

在下面介绍Android中如何使用instanceof关键字开发更方便时,先来温习一下java中instanceof的概念。 ------------------------------------...
  • MrZhang_happy
  • MrZhang_happy
  • 2016年01月05日 15:56
  • 2739

Java之instanceof关键字简单例子

开心一笑妻子总是怀疑丈夫有外遇,趁丈夫不在家的时候翻看了他的日记,并找到了充足的证据。 待丈夫下班回家后,妻子又哭又闹地质问:“谁是你的夫人?” 丈夫听了感到莫名其妙,回答说:“除了你,还能有谁呢...
  • huangwenyi1010
  • huangwenyi1010
  • 2016年05月04日 21:41
  • 552

JAVA语言之instanceof关键字

JAVA语言之instanceof关键字
  • beautiful_face
  • beautiful_face
  • 2017年03月19日 13:02
  • 235

方法重写、instanceof关键字

一、方法重写: 1、目前的问题:父类的功能无法满足子类的需求。2、方法重写的前提: 必须要存在继承的关系。3、方法的重写: 子父类出现了同名的函数,这个我们就称作为方法的重写。4、什么是时候要使用方...
  • qq_34944851
  • qq_34944851
  • 2016年10月20日 16:30
  • 236

抽象类(abstract class)和接口(Interface)的区别

前言 抽象类(abstract class)和接口(Interface)是Java语言中对于抽象类定义进行支持的两种机制,赋予了Java强大的面向对象能力。二者具有很大的相似性,甚至可以相互替换,因...
  • aptentity
  • aptentity
  • 2017年04月01日 11:53
  • 1199

关于SharedPreferences工具类的使用思考

前几天在项目中使用了SharedPreferences的工具类,代码如下: package com.zhy.utils; import java.lang.reflect.Invocati...
  • u010665691
  • u010665691
  • 2015年05月06日 10:36
  • 694

java不同类加载器对instanceof关键字运算的影响

内容:对于任意的一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类空间。只要加载类的类加载器不同的话,那么这个两个类就必定不相等(包括...
  • u011345136
  • u011345136
  • 2015年05月18日 15:54
  • 1167

【类反射】反射示例(模拟Instanceof的功能)

需求:通常我们会判断两个对象是否属于同一个类,可以由某个对象.instance(另一个对象)进行比较。此时如何模拟出这种功能呢? 思路:(1)此方法有两个参数,返回值类型为boolean类型。(2)第...
  • qq_35415600
  • qq_35415600
  • 2017年04月19日 16:01
  • 392

Java初学习 - instanceof的用法

package myPackage; /** * instanceof运算符用法 * 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当 * 左面的对象是右面的类创建的对象时,该运...
  • cnmilan
  • cnmilan
  • 2014年12月03日 13:43
  • 51263
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Class.isAssignableFrom(Class clz)方法 与 instanceof 关键字有什么区别
举报原因:
原因补充:

(最多只允许输入30个字)