2016-11-16 10 views
0

私は1つのラベルを持っています。これは、1つの配列プロパティ名が "LEG_OV_ARR"であることを示します。これは長いデータ型です。Neo4j - 手続き内の配列プロパティを読み取る

例:

[297, 107, 0, 0, 0, 0] is LEG_OV_ARR array values.

私は私の手順で、この配列の値を読むことをお勧めします。

マイ手続きのコードは次のとおりです。

List<String> listArr = (List<String>) node.getProperty("LEG_OV_ARR"); 
log.info("listArr val "+listArr); 

私は、エラーの下に取得しています:

[Ljava.lang.String; cannot be cast to java.util.List 
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.util.List 

このコードに場合:

Long[] listArr = (Long[]) node.getProperty("LEG_OV_ARR"); 
log.info("listArr val "+listArr); 

私はエラーの下に取得しています。私はit.Ifあらゆる可能性を修正するにはどうすればよい

[Ljava.lang.String; cannot be cast to [Ljava.lang.Long; 
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to   
[Ljava.lang.Long 

私を助けてください...

+0

Javaで 'String'を' List'や 'Long []'にキャストすることはできません。 'LEG_OV_ARR'にはどのような価値がありますか? –

+0

LEG_OV_ARRには[297,107,0,0,0,0]が含まれています。 – nmkkannan

+0

その値はおそらく文字列値 '' [297,107,0,0,0,0] ''になります。 Stringを解析し、手動で 'Long []'に変換する必要があります。 –

答えて

1

ClassCastException正確にオブジェクトの実際のtypeを説明します:

Declares a fully qualified type between the L and the semi-colon 
↓    ↓ 
[Ljava.lang.String; 
↑ ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 
| The type, i.e. String 
| 
An array of the following type 

あなたがしようとする理由とにかくそれは文字列のressembing何かを教えて、それは文字列のリストにキャストし、その後、ロングの配列をとにかくキャスト?これは、実際に文字列の配列です:代わりに[297, 107, 0, 0, 0, 0]を格納する

String[] listArr = (String[]) node.getProperty("LEG_OV_ARR"); 
log.info("listArr val " + Arrays.toString(listArr)); 

、あなたは["297", "107", "0", "0", "0", "0"]を保存します。

+0

絶対に正しいですが、配列にはintegers.ifが含まれています。long [] listArr =(Long [])node.getProperty( "LEG_OV_ARR"); log.info( "listArr val" + listArr);そのスロー[Ljava.lang.String; [Ljava.lang.Long error]にキャストすることはできません。 – nmkkannan

+0

いいえ、整数を含んでいません。整数の文字列表現が含まれています。これはランタイム例外があなたに言うことです: 'String []'を 'Long []'としてキャストしようとしていて、QEDのプロパティ**が 'String []' **です。 –

+0

[OK]ソリューションとは何ですか? – nmkkannan

関連する問題