读书人

clone后为啥不equals

发布时间: 2012-08-11 20:50:31 作者: rapoo

clone后为什么不equals

Java code
package prototype;public abstract class AbstractPerson implements Cloneable{    @Override    protected Object clone() {        Object obj=null;        try {            obj= super.clone();        } catch (CloneNotSupportedException e) {            e.printStackTrace();        }        return obj;    }        public abstract void canSpeak();}


Java code
package prototype;public class Person extends AbstractPerson{    @Override    public void canSpeak() {        System.out.println("i can speack..");    }}



Java code
package prototype;public class Client {    public static void main(String[] args) {        AbstractPerson ap=new Person();        AbstractPerson ap2=null;        ap2=(Person)ap.clone();        System.out.println(ap2.equals(ap));    }}


为什么会是false???????????

[解决办法]
你没重写equals它默认是判断是否指向同一对象(与==一样效果),clone出来的是两个不同对象,所以是false

读书人网 >J2SE开发

热点推荐