java isAssignableFrom 用法
来源:互联网 发布:怎么找淘宝客服的工作 编辑:程序博客网 时间:2024/06/05 13:26
/** * Determines if the class or interface represented by this * {@code Class} object is either the same as, or is a superclass or * superinterface of, the class or interface represented by the specified * {@code Class} parameter. It returns {@code true} if so; * otherwise it returns {@code false}. If this {@code Class} * object represents a primitive type, this method returns * {@code true} if the specified {@code Class} parameter is * exactly this {@code Class} object; otherwise it returns * {@code false}. * * <p> Specifically, this method tests whether the type represented by the * specified {@code Class} parameter can be converted to the type * represented by this {@code Class} object via an identity conversion * or via a widening reference conversion. See <em>The Java Language * Specification</em>, sections 5.1.1 and 5.1.4 , for details. * * @param cls the {@code Class} object to be checked * @return the {@code boolean} value indicating whether objects of the * type {@code cls} can be assigned to objects of this class * @exception NullPointerException if the specified Class parameter is * null. * @since JDK1.1 */ public native boolean isAssignableFrom(Class<?> cls);
A instanceof B 相比大家都很熟悉,判断A对象是否为B类或接口的实例或者子类或子接口的实例,
A isAssignableFrom B 是Class类的一个native方法,很多时候没直接用到,用Class对象的时候才会用到,A Class对象所代表的类或者接口 是否为B Class对象所代表的类或者接口,或者B Class对象所有代表的类或者接口的子类或子接口,是的话就返回true否则false。
听起来好拗口,确实,下面用代码例子来解释
class A { } class B extends A{ } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, B.class.isAssignableFrom(A.class) + ""); Log.d(TAG, B.class.isAssignableFrom(B.class) + ""); Log.d(TAG, A.class.isAssignableFrom(A.class) + ""); Log.d(TAG, A.class.isAssignableFrom(B.class) + ""); Log.d(TAG, new A().getClass().isAssignableFrom(A.class) + ""); Log.d(TAG, new A().getClass().isAssignableFrom(B.class) + ""); Log.d(TAG, new B().getClass().isAssignableFrom(B.class) + ""); Log.d(TAG, new B().getClass().isAssignableFrom(A.class) + ""); }
因为我是直接在安卓项目里面测试的,所以有个onCreate(),改成纯java的对大家来说应该都不是事,忽略这个吧
看下打印结果
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: false
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: true
12-04 08:57:56.747 21395-21395/android.example.com.customannotationdemo D/MainActivity: false
相信不用我解释,看到这个结果大家应该都明白了
- java isAssignableFrom 用法
- Java中isAssignableFrom的用法
- Java isAssignableFrom 理解
- java instanceof与isAssignableFrom
- Java-----instanceof、isInstance、isAssignableFrom
- Java isAssignableFrom、instanceof 、isInstance
- isAssignableFrom
- java isassignablefrom 判断子父类关系
- Java中isAssignableFrom和instanceof
- JAVA isAssignableFrom 判断父子关系
- instanceof、isInstance、isAssignableFrom的用法介绍
- Class进阶(包含instanceof,Class.isAssignableFrom用法)
- 【Java知识点】Java中isAssignableFrom、instanceof、isInstance
- 关于 java.lang.Class.isAssignableFrom() 方法
- Java中的instanceof,isInstance和isAssignableFrom
- 【Java基础】Class.isAssignableFrom与 instanceof 区别
- java 判断类和实例的关系(instanceof,isInstance,isAssignableFrom)
- 从头认识java-12.3 instanceof、isInstance和isAssignableFrom
- 对话:通证(token)是下一代互联网数字经济的关键
- PHP phpmailer 发送邮件 腾讯邮局
- 贪心算法秘籍
- iOS程序员眼中的首次使用产品体验
- [Java爬虫HttpClient_Demo1]
- java isAssignableFrom 用法
- Spring拦截器
- 请根据观察者模式,用Java语言设计并实现气象站程序
- hadoop之为什么要用sudo
- 神经网络和深度学习简史(全)
- BZOJ-2829信用卡凸包 凸包+向量旋转计算
- B
- 三国历史读后感
- Java设计模式百例