关于java向下类型转换的问题

沒有主角 发布于 2012/08/28 16:37
阅读 767
收藏 0

在C:\Program Files\Java\jdk1.7.0\src\java\lang\String.java文档中有一下代码:

 public boolean equals(Object anObject) {

        if (this == anObject) {

            return true;

        }

        if (anObject instanceof String) {

            String anotherString = (String)anObject;

            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;

            }

        }

        return false;

问题是:红色的字体的代码有什么作用?为什么要写上这样的段代码。

我在自己的练习中没有类似的代码,程序一样可以编译通过。

我的练习代码:

public class EqualsTest

{

public static void main(String[] args)

{

Student s1 = new Student("lisi");

Student s2 = new Student("lisi");

 

System.out.println(s1 == s2);

System.out.println(s1.equals(s2));

}

}

 

class Student

{

String name;

 

public Student(String name)

{

this.name = name;

}

 

public boolean equals(Student anobject)

{

if (this == anobject)

{

return true;

}

if(anobject instanceof Student)

{

                                                      //这里按照上面的思路是需要强制类型转换的!

if(anobject.name.equals(this.name))

{

return true;

}

}

return false;

}

 

}

求解!

加载中
0
serenity
serenity

你自己代码中boolean equals(Student anobject)参数类型是 Student,当然不用强制转换的。

JDK示例中boolean equals(Object anObject)参数类型是Object ,强制转换是为了方便使用String类型的方法

0
沒有主角
沒有主角
懂了 谢谢高手! 我看了好久都没有看出来。。。。。。
返回顶部
顶部