使用instanceof返回true扩展java.util.Date的Mask对象

我有一个从java.util.Date扩展的类。但是,我需要确保条件instanceof Date返回false。这可能吗?原因是因为我需要重写与之集成的框架的功能,如果它的类型为Date,它将改变我的对象的行为。


import java.io.Serializable;

import java.util.Date;


public abstract class KronosDateTime extends Date implements Serializable {


    public KronosDateTime(final long time) {

        super(time);

    }


    public KronosDateTime() {

        super();

    }


    public abstract double toDoubleValue();


}



public final class KronosDateTimeImpl extends KronosDateTime {

    public KronosDateTimeImpl() {

        this(System.currentTimeMillis(),true);

    }

}


public final class Kronos {

    public static KronosDateTime call(PageContext pc) {

        KronosDateTimeImpl dateTime = new KronosDateTimeImpl(pc);

        System.out.println(dateTime instanceof java.util.Date); // Should return false

        return dateTime;

    }

}


胡说叔叔
浏览 189回答 2
2回答

慕容708150

不可能(鉴于当前代码)。通过说A extends B您是说A的任何实例也是B的实例。因此,该instanceof检查将始终返回true。当然,您的代码可以避免这种检查,例如执行Eran的建议。但是没有什么可以阻止其他人使用instanceof。因此,这里的真正答案是:了解继承的含义。你不能吃蛋糕,但还是要吃。无论你的约会类扩展日期,或者它不是。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java