首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

求先人指点,强制类型转换

2012-09-29 
求前辈指点,强制类型转换Java codepackage com.Code_Personimport java.util.*public class Code {publi

求前辈指点,强制类型转换

Java code
package com.Code_Person;import java.util.*;public class Code {    public final int id; //身份证号已确认,不能修改    public Code(int id)    { this.id=id; }       //这里提示我overrides java.lang.Object.equals       //问题1:为什么我随便写个名字叫做equals的方法就重载了?    public boolean equals(Object anObject)    {                //问题2:传进来的时候类型和参数不就确定了吗,为什么这里还要判断一次?        if(anObject instanceof Object)        {                        //Incompatible operand types int and Code                     //不兼容的操作数类型int和代码    //        return this.id==(Code)anObject.id;                       //问题3:要改成下面这种写法才没报错 为什么 上面不是已经做了类型转换了吗0.0?            Code tmp=(Code)anObject;            return this.id==tmp.id;        }        return false;    }}

谢谢0.0

[解决办法]
1、equals 是Object类的方法,所有类都是它的子类。 所以你的类也是它的子类,就重写了(是重写,不是重载)

2、方法里面定义的参数是Object类型,所以这个方法,不管你传什么类型,它都能够接收,为了防止你传非指定类型的参数,所以要用instanceof 判断一下。 但是你这里用的是instanceof Object ,所以这句话再这里就是句废话,因为所有类都是Object ,除非你传的参数是null

3、Code 为 Object 的子类 , 参数为Object类型,向下转型要强转。
[解决办法]
问题1 

没看明白, 但不随便啊,需要参数列表,方法名和返回类型相同

问题2
应改为
Java code
if(anObject instanceof Code)
[解决办法]
this.id==((Code)anObject).id

热点排行