加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

instanceof、isInstance、isAssignableFrom的区别

发布时间:2020-12-14 06:23:14 所属栏目:Java 来源:网络整理
导读:https://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom 1. MyClass.class.isInstance(obj) ?is for checking an instance. It returns true when the parameter obj is non-null and can be cast to? MyClass ?with

https://stackoverflow.com/questions/3949260/java-class-isinstance-vs-class-isassignablefrom

1. MyClass.class.isInstance(obj)?is for checking an instance. It returns true when the parameter obj is non-null and can be cast to?MyClass?without raising a?ClassCastException. In other words,obj is an instance of?MyClass?or its subclasses.

2.?MyClass.class.isAssignableFrom(Other.class)?will return true if?MyClass?is the same as,or a superclass or superinterface of,?Other.?Other?can be a class or an interface. It answers true if?Other?can be converted to a?MyClass.

= </span><span style="color: #0000ff;"&gt;public</span> <span style="color: #0000ff;"&gt;void</span><span style="color: #000000;"&gt; doit() { A myA </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; A(); B myB </span>= <span style="color: #0000ff;"&gt;new</span><span style="color: #000000;"&gt; B(); A[] aArr </span>= <span style="color: #0000ff;"&gt;new</span> A[0<span style="color: #000000;"&gt;]; B[] bArr </span>= <span style="color: #0000ff;"&gt;new</span> B[0<span style="color: #000000;"&gt;]; System.out.println(</span>"b instanceof a: " + (myB <span style="color: #0000ff;"&gt;instanceof</span><span style="color: #000000;"&gt; A)); System.out.println(</span>"b isInstance a: " + A.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;.isInstance(myB)); System.out.println(</span>"a isInstance b: " + B.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;.isInstance(myA)); System.out.println(</span>"b isAssignableFrom a: " + A.<span style="color: #0000ff;"&gt;class</span>.isAssignableFrom(B.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;)); System.out.println(</span>"a isAssignableFrom b: " + B.<span style="color: #0000ff;"&gt;class</span>.isAssignableFrom(A.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;)); System.out.println(</span>"bArr isInstance A: " + A.<span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt;.isInstance(bArr)); System.out.println(</span>"bArr isInstance aArr: " +<span style="color: #000000;"&gt; aArr.getClass().isInstance(bArr)); System.out.println(</span>"bArr isAssignableFrom aArr: " +<span style="color: #000000;"&gt; aArr.getClass().isAssignableFrom(bArr.getClass())); } </span><span style="color: #0000ff;"&gt;class</span><span style="color: #000000;"&gt; A { } </span><span style="color: #0000ff;"&gt;class</span> B <span style="color: #0000ff;"&gt;extends</span><span style="color: #000000;"&gt; A { }

}

结果

b a:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读