与往常一样,尝试并查看您的特定情况,但是:
-异常昂贵,非常明显。
-将异常用于代码流几乎总是一个坏主意
编辑:好的,我很感兴趣,所以我写了一个快速测试系统
public class Test{ public Test(){ B b=new B(); C c=new C(); for(int i=0;i<10000;i++){ testUsingInstanceOf(b); testUsingInstanceOf(c); testUsingException(b); testUsingException(c); } } public static void main(String[] args){ Test test=new Test(); } public static boolean testUsingInstanceOf(A possiblyB){ if (possiblyB instanceof B){ return true; }else{ return false; } } public static boolean testUsingException(A possiblyB){ try{ B b=(B)possiblyB; return true; }catch(Exception e){ return false; } } private class A{ } private class B extends A{ } private class C extends A{ } }
个人资料结果:
by InstanceOf: 4.43 msby Exception: 79.4 ms
正如我所说,非常昂贵
甚至当它始终是B时(模拟当您99%确信B时,您只需要确保它仍然不会更快即可即可即可:
剖析结果始终为B:
by InstanceOf: 4.48 msby Exception: 4.51 ms
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)