我确实在 ym 代码中有一些 instanceof 检查,但有些我希望可以避免。通常只要有多个 if 语句,例如:
public void setValue(Object newValue) {
//dateTime is a member variable of the type java.util.Date
if (newValue instanceof Date) {
dateTime = new DateTime((Date) newValue);
} else if (newValue instanceof Calendar) {
dateTime = MyDateTimeUtils.toDate((Calendar)newValue);
} else if (newValue instanceof String) {
dateTime = MyDateTimeUtils.toDate((String)newValue);
}
}
MyDateTimeUtils 只是一个实用程序类,用于转换日期/时间类型(日历到日期、日期到日历、字符串到日期等)。
我的主要问题是,newValue 属于实例对象(我无法更改方法签名,因为它是处理数据绑定的框架的一部分)。如果它是有形的,我想它会更简单,我可以让该类实现一个接口,该接口提供到 Date 的转换方法。但由于它是 Object 类型,我不确定如何绕过这些 instanceof 检查?