我有一個從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條經(jīng)驗 獲得超4個贊
不可能(鑒于當前代碼)。
通過說A extends B
您是說A的任何實例也是B的實例。
因此,該instanceof
檢查將始終返回true。當然,您的代碼可以避免這種檢查,例如執(zhí)行Eran的建議。但是沒有什么可以阻止其他人使用instanceof。
因此,這里的真正答案是:了解繼承的含義。你不能吃蛋糕,但還是要吃。無論你的約會類擴展日期,或者它不是。
添加回答
舉報
0/150
提交
取消