Skip to main content
 首页 » 编程设计

java之扩展 java.util.Date 的掩码对象,不使用 instanceof 返回 true

2024年06月03日163lori

我有一个从 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. 
}