我有一个从 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;
}
}
请您参考如下方法:
不,不使用extends
。根据定义,扩展另一个类的类的实例是两个类的实例。
但是您可以改用组合:
class KhronosDateTime /* doesn't extend Date */ {
private final Date date;
KhronosDateTime(long time) {
this.date = new Date(time);
}
// Whatever methods using date.
}