2

私は 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 チェックを回避する方法がわかりません。

4

1 に答える 1