lisp判断选区是否有对象_java 判断对象是否是某个类的类型两种方法

例如:

Boolean b;

String str = "foo";

b = ( str instanceof String );   // true

b = ( str instanceof Object );   // also true

b = ( str instanceof Date );     // false, not a Date or subclass

注意:

1)null值不是任何对象的实例,所以下面这个例子返回了false,无论这个变量声明的是什么类型。

String s = null;

if ( s instanceof String )

// false, won't happen

2)instanceof也可以正确的报告一个对象是否是数组和特定的接口类型。

if ( foo instanceof byte[] )

第二种:

一般可能我们在使用java的RTTI技术时,都使用instanceof来判断一个对象是不是属于某个类,但是有时候这个类是继承于一个父类的,所以,不能严格判断出是不是自己的类,而不是自己的父类。这个时候就使用另一种思路也是不错的——getClass判断;当然肯定还有其他的方法来判断的,只是自己的总结。如果有好的其他方法请赐教。。

public class test {

public static void main(String arg[]) {

ClassA a = new ClassA();

ClassB b = new ClassB();

ClassC c = new ClassC();

sayClass(a);

sayClass(b);

sayClass(c);

System.out.println("---------------------------------");

equalClass(a);

equalClass(b);

equalClass(c);

}

public static void sayClass(Object o){

if(o instanceof ClassA){

System.out.println("ClassA");

}else if(o instanceof ClassB){

System.out.println("ClassB");

}

}

public static void equalClass(Object o){

if(o.getClass().equals(ClassA.class)){

System.out.println(o.getClass().getName());

}else if(o.getClass().equals(ClassB.class)){

System.out.println(o.getClass().getName());

}else if(o.getClass().equals(ClassC.class)){

System.out.println(o.getClass().getName());

}

}

}

class ClassA{

ClassA(){};

}

class ClassB{

ClassB(){};

}

class ClassC extends ClassA{

ClassC(){};

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值