看起来很简单的equals()有关问题,可就是不明白(2)
hashTest.test();
MyKeyTest keyTest = new MyKeyTest();
keyTest.test();
}
}
问题
1--编译通过后但是会有以下提示,为什么?
/****
Note: C:\java\HashTable_Equals_Test.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
******/
2-- “//////88”那行的equals()覆盖时候,为什么传入的参数Object obj必须转换成MyKey类型才行,否则会报错误---找不到name 和 age变量??
大家可以试试看,程序中注释掉的大家可以去掉注释运行(多种方法均可).
3-- equals()中if语句
if(name.equals(((MyKey)obj).name) && age==((MyKey)obj).age)///99
的name的比较用equals()和==都可以,这是怎么回事?
用equals(((MyKey)obj).name),此时的equals()调用的是Object.equals()
还是MyKey.equals(),还是其他的?
4. 44444// 那行,问题已经写在上面了
------解决方案--------------------------------------------------------
1.JDK 5在使用集合时推荐使用范型,这个警告没什么太大关系,不用范型从集合中取回的东西是object,自己注意转型就是了
2.传经来的是一个Object,MyKey 不能指向Object,所以要向下转型
3.name是String类,String重写了equals()方法
------解决方案--------------------------------------------------------
好好读书。
------解决方案--------------------------------------------------------
天天向上