我有一个从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 回答
![?](http://img1.sycdn.imooc.com/545864000001644402200220-100-100.jpg)
慕容708150
TA贡献1831条经验 获得超4个赞
不可能(鉴于当前代码)。
通过说A extends B
您是说A的任何实例也是B的实例。
因此,该instanceof
检查将始终返回true。当然,您的代码可以避免这种检查,例如执行Eran的建议。但是没有什么可以阻止其他人使用instanceof。
因此,这里的真正答案是:了解继承的含义。你不能吃蛋糕,但还是要吃。无论你的约会类扩展日期,或者它不是。
添加回答
举报
0/150
提交
取消