关于下溯造型,为什么不安全?String类中的equals方法源码疑问
if (anObject instanceof String) {
String anotherString = (String)anObject;【请问这句代码anobject为什么要强制转换为Sting类型,
有人说以防父类用子类的方法用不到,可是什么情况下父类才能用不到子类的方法呢,请举个例子讲解好吗】
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
[解决办法]
http://topic.csdn.net/u/20111007/10/f24bc519-6e98-4915-9dcc-467957ab6b31.html
看3楼阿宝前辈的回复
[解决办法]
你这段代码似乎本来就有问题,无法通过编译,触发你这里用的String是你自己重写的String而不是java.lang.String
强制转换为String类型的原因很简单,就是要调用子类比父类多声明的方法
如果anObject不转换为String类型,那么就无法调用String的substring() split()这些Object对象没有的方法
Object s="abc"; if(s instanceof String){ String str=(String)s; str.substring(0,1); //s.substring(0,1); 不进行类型转换这里编译就报错 }
[解决办法]