0

この質問にはすでに答えがあります。

異なる型(float、int、doubleなど)で渡される関数がいくつかあります。現在、これらの型をFloat、Integer、Doubleなどにボクシングし、それらをObjectパラメータを取る1つの関数に渡しています。次のようになります。

private void handleInt(int val) {
    //do something
    addValue(new Integer(val));
}

private void handleFloat(float val) {
    //do something
    addValue(new Float(val));
}

private void handleDouble(double val) {
    //do something
    addValue(new Double(val));
}

private void addValue(Object val) {
    //Do something with object val
    //.compareTo needs to be called here to compare previous value
}

addValueに送信されたvalパラメータを、以前に配列に格納したものと比較したいと思います。しかし、Objectはさまざまなボックス型(Float、Integerなど)すべての基底クラスなので、Objectを拡張して同等のものを実装する独自のクラスを作成する必要がありますか?

そして、私のcompareTo関数で、どうやってこれを達成するのでしょうか?


  • ラッパーを明示的に構築する必要はありません。 Jus doaddValue(val);。オートボクシングが残りを処理します。 - shmosel
  • 1)比較する必要があるのはなぜですか相対すなわち、より小さい/より大きい?なぜですかequals()十分ではない?すべてのオブジェクトはequalsを実装しており、異種の型を比較できます。 --- 2)あなたならしなければならないどうやってtypeの以前の値を比較するかString型の新しい値に対してDouble? - Andreas
  • @shmoselに同意しますが、明示的になりたい場合は、次のようにします。valueOf()、 のではなくnew例えば、addValue(Integer.valueOf(val));これはまさにオートボクシングが行うことです。 - Andreas
  • 比較したいのですが、比較したいのですが、それらが互いに等しいかどうかではなく、どちらが大きいか小さいかを確認したいのです。 - Hans Landa
  • @HansLandaそれでは、2番目のポイントをどのように処理したいですか。 - Andreas

リンクされた質問


関連する質問

最近の質問