isInstance,isAssignableFrom两个方法的用法

crimy10 2010-04-21 08:26:48
希望能给出isInstance()的用法,主要想弄明白是谁与谁比较(是is前边的对象与括号中的对象比较??还是反过来)
还有isAssignableFrom()方法,主要也是想弄明白是谁与谁进行比较,最好有个实例。谢谢
...全文
2971 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wingardium 2010-04-21
  • 打赏
  • 举报
回复
2楼正解
liwenso 2010-04-21
  • 打赏
  • 举报
回复

String str = "";
Object o = new Object();
System.out.println(String.class.isInstance(o));
System.out.println(String.class.isInstance(str));
System.out.println(String.class.isAssignableFrom(Object.class));
System.out.println(Object.class.isAssignableFrom(Object.class));
System.out.println(Object.class.isAssignableFrom(String.class));

输出结果

false
true
false
true
true


isInstance的参数为对象。例:
调用者.getClass().isInstance(调用者本身或者父类接口的实例[object除外])返回true,反之false

isAssignableFrom的参数为class,例:
调用者.getClass().isAssignableFrom(调用者本身或者子类的class)返回true,反之false
hardycheng 2010-04-21
  • 打赏
  • 举报
回复
public boolean isInstance(Object obj)
判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。此方法是 Java 语言 instanceof 运算符的动态等效方法。如果指定的 Object 参数非空,且能够在不引发 ClassCastException 的情况下被强制转换成该 Class 对象所表示的引用类型,则该方法返回 true;否则返回 false。
特别地,当该 Class 对象表示一个已声明的类时,若指定的 Object 参数是所表示类(或其任一子类)的一个实例,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个数组类,且通过身份转换或扩展引用转换,指定的 Object 参数能转换为一个数组类的对象,则返回 true;否则返回 false。如果此 Class 对象表示一个接口,且指定 Object 参数的类或任一超类实现了此接口,则此方法返回 true;否则返回 false。如果此 Class 对象表示一个基本类型,则此方法返回 false。
参数:
obj - 要检查的对象
返回:
如果 obj 是此类的实例,则返回 true
从以下版本开始:
JDK1.1

============================================

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧