この質問にはすでに答えがあります。
異なる型(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関数で、どうやってこれを達成するのでしょうか?
addValue(val);
。オートボクシングが残りを処理します。 - shmoselequals()
十分ではない?すべてのオブジェクトはequalsを実装しており、異種の型を比較できます。 --- 2)あなたならしなければならないどうやってtypeの以前の値を比較するかString
型の新しい値に対してDouble
? - AndreasvalueOf()
、 のではなくnew
例えば、addValue(Integer.valueOf(val));
これはまさにオートボクシングが行うことです。 - Andreas