1

状況は次のとおりです。Long のインスタンスを含むことを明示的に知っている Map にオブジェクトがあり、その値を文字列に変換する必要がありますが、互換性のない型エラーが発生し続けます。私のコードは次のようになります。

Map<String, Object> map = ...;
Object obj = new Long(31415L);
String str = Long.valueOf((long)map.get("id")); //Problem line

これは与える:

Inconvertible types.
Found   : java.lang.Object
Required: long

これを回避する方法について何か提案はありますか?

4

4 に答える 4

5

たとえば、次のように使用します。

String.valueOf(map.get("id"))

問題は、オブジェクトをプリミティブ型にキャストしようとすることです。それはうまくいきません。

ただし、マップの値はLongとにかく s になるため (コレクションにはプリミティブ型を含めることはできません。GNU Trove にあるような特殊な実装を保存してください)、@BheshGurung の回答を見てください...

于 2013-06-14T18:25:01.507 に答える
5

あなたはただすることができます

String str = map.get("id").toString();
于 2013-06-14T18:25:07.397 に答える
0

ここに 2 つの問題があります。

  1. あなたは*ロングではなく * ロングを作りました。したがって、* l * ong ではなく、 * L *ongにキャスト バックする必要があります。

  2. * L *ongの String 表現を取得するには、toString() を呼び出す必要があります。

これを使って: String str = ((Long)map.get("id")).toString();

于 2013-06-14T18:38:11.633 に答える
0
 You can use the toString function;  

 public String toString() {
    return String.valueOf(map.get("id"))
 }



    String str = map.get("id").toString();
于 2013-06-14T18:33:10.273 に答える