为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡说叔叔 2021-04-09 16:15:38
我有一个从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;    }}
查看完整描述

2 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

不可能(鉴于当前代码)。

通过说A extends B您是说A的任何实例也是B的实例

因此,该instanceof检查将始终返回true。当然,您的代码可以避免这种检查,例如执行Eran的建议。但是没有什么可以阻止其他人使用instanceof。

因此,这里的真正答案是:了解继承的含义。你不能吃蛋糕,但还是要吃。无论你的约会类扩展日期,或者它不是


查看完整回答
反对 回复 2021-04-21
  • 2 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信