一个查看源代码的问题

代码如下:

package java1;
import java.util.Set;
import java.util.HashSet;
class Person 
{

private String name;
private int age;
public Person(String name ,int age)
{

this.name=name;
this.age=age;


};
public String toString()
{
return "姓名:"+this.name+";年龄"+this.name;




}


public boolean equals(Object obj)
{

if(this==obj)
{
return true;




}


if(!(obj instanceof Person))
{

return false;
}
Person p=(Person) obj;
if(this.name.equals(p.name)&&this.age==p.age)
{

return true;


}
else
{
return false;


}




}


public int hashCode()
{

return this.name.hashCode()*this.age;


}



}


public class nicai{


public static void main(String args[])
{
Set<Person> allset=new HashSet<Person>();
allset.add(new Person("张三",30));
allset.add(new Person("李四",31));
allset.add(new Person("王五",32));
allset.add(new Person("王五",32));
allset.add(new Person("王五",32));
allset.add(new Person("赵六",33));
allset.add(new Person("孙七",33));
System.out.println(allset);

}


}

代码的本身没问题,我思考的是代码中是怎么调用equal()方法以及hashCode方法的,于是就去查看add的源代码,我先点击allset.add(new Person)的add源代码发现只是跳转到了 boolean add(E e);并没有它的源码,刚开始我怀疑是我的编辑器打不开源码,后来发现,allset是Set类,HashSet是Set的子类,Set<Person> allset=new HashSet<Person>()这条语句把allset实例化为Set的一个子类也就是HashSet的一个对象,那就是说allset.add调用的方法当然是在HashSet()类中覆写过得方法,所以应该去寻找HashSet类中的add方法,果然找到了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值