見つけようとしましたが、すべてがあいまいに見えます。 Object oをDoubleに変換する必要があります。最初に文字列に変換する正しい方法はありますか?ありがとう。
オブジェクトがDoubleでない場合、オブジェクトをDouble
にキャストできません。
[〜#〜] api [〜#〜] を確認してください。
特に注意
valueOf(double d);
そして
valueOf(String s);
これらのメソッドは、StringまたはdoubleプリミティブからDouble
インスタンスを取得する方法を提供します。 (コンストラクターでもありません。ドキュメントを読んでその仕組みを確認してください)変換しようとしているオブジェクトは、doubleに変換できるものを提供する必要があります。
最後に、Double
インスタンスは不変であることに注意してください。作成したインスタンスは変更できません。
new Double(object.toString());
しかし、あなたがオブジェクトからダブルに行くことは私には奇妙に思えます。変換を試みる前に、どのクラスのオブジェクトから始めているかをよく理解しておく必要があります。コード品質の問題が少しあるかもしれません。
これは変換であり、キャストではないことに注意してください。
オブジェクトが整数などの数値を表す場合は、数値にキャストしてからdoubleValue()メソッドを呼び出すことができます。
Double asDouble(Object o) {
Double val = null;
if (o instanceof Number) {
val = ((Number) o).doubleValue();
}
return val;
}
Instanceof演算子を使用して、キャストする前にdoubleかどうかをテストできます。その後、安全にdoubleにキャストできます。さらに、他の既知のタイプ(整数など)に対してテストし、必要に応じて手動で強制的にdoubleに変換できます。
Double d = null;
if (obj instanceof Double) {
d = (Double) obj;
}
Java 1.7より前のバージョンでは、オブジェクトをプリミティブ型にキャストできません
double d = (double) obj;
オブジェクトをDoubleにキャストできます
Double d = (Double) obj;
オブジェクトがDoubleでない場合、ClassCastExceptionをスローする可能性があることに注意してください
言及する価値もあります-古いJava 1.5より前のバージョンを使用することを強制され、コレクションを使用しようとしている場合、パラメーター化することはできませんDouble
などのタイプのコレクション。
新しいアイテムを追加するときは、クラスDouble
に手動で「box」、「unbox "を解析およびキャストしてプリミティブdouble
に追加し、次のようにします。
LinkedList lameOldList = new LinkedList();
lameOldList.add( new Double(1.2) );
lameOldList.add( new Double(3.4) );
lameOldList.add( new Double(5.6) );
double total = 0.0;
for (int i = 0, len = lameOldList.size(); i < len; i++) {
total += Double.valueOf( (Double)lameOldList.get(i) );
}
古い学校のリストにはObject
型のみが含まれるため、Double
にキャストする必要があります。
また、初期のJavaバージョン-forループでのみ、拡張for-loopを使用してリストを反復処理することはできません。
変換のためにこれらすべての方法を試しました->
public static void main(String[] args) {
Object myObj = 10.101;
System.out.println("Cast to Double: "+((Double)myObj)+10.99); //concates
Double d1 = new Double(myObj.toString());
System.out.println("new Object String - Cast to Double: "+(d1+10.99)); //works
double d3 = (double) myObj;
System.out.println("new Object - Cast to Double: "+(d3+10.99)); //works
double d4 = Double.valueOf((Double)myObj);
System.out.println("Double.valueOf(): "+(d4+10.99)); //works
double d5 = ((Number) myObj).doubleValue();
System.out.println("Cast to Number and call doubleValue(): "+(d5+10.99)); //works
double d2= Double.parseDouble((String) myObj);
System.out.println("Cast to String to cast to Double: "+(d2+10)); //works
}