私は 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 は、日付/時刻型 (Calendar から Date、Date から Calendar、String から Date など) を変換する単純なユーティリティ クラスです。
私の主な問題は、 newValue がインスタンス Object のものであることです (データバインディングを処理するフレームワークの一部であるため、メソッドのシグネチャを変更することはできません)。それが具体的なものであれば、もっと簡単になると思います。そのクラスに、Date への変換メソッドを提供するインターフェイスを実装させることができます。しかし、それは Object 型であるため、これらの instanceof チェックを回避する方法がわかりません。