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;
}
}
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;
}
}
看3楼阿宝前辈的回复
强制转换为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); 不进行类型转换这里编译就报错
}
String anotherString = (String)anObject;必须要强制转换了,左边string类型右边你用obj明显编译都过不去。
转换成string类型是为了接下来判断的。这段代码主要是判断char数组是不是一样。因为string是用他自己私有的char数组来保存字符串的。大概就这么个意思,更多细节详见源码