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;
    }
}

解决方案 »

  1.   

    http://topic.csdn.net/u/20111007/10/f24bc519-6e98-4915-9dcc-467957ab6b31.html
    看3楼阿宝前辈的回复
      

  2.   

    你这段代码似乎本来就有问题,无法通过编译,触发你这里用的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); 不进行类型转换这里编译就报错
            }
      

  3.   

    源码的话string的value是private final修饰的,你把那段代码放到外面当然编译不通过了
    String anotherString = (String)anObject;必须要强制转换了,左边string类型右边你用obj明显编译都过不去。
    转换成string类型是为了接下来判断的。这段代码主要是判断char数组是不是一样。因为string是用他自己私有的char数组来保存字符串的。大概就这么个意思,更多细节详见源码