2017-06-08 10 views
-3

文字列配列をオブジェクトにキャストしようとしています。Java:文字列配列をオブジェクトにキャストする

Object string="[FIBER,CABLE]"; 
String[] strArray = (String[])string; 

ClassCastExceptionがあります。私が知りたかった

Object string="[FIBER,CABLE]"; 
String[] strArray = ((String)string).split("[,\\]\\[]"); 

for(int i=1;i<strArray.length;i++) 
    System.out.println(strArray[i]); 

スラッシュとコンマで分割strで

得ることができます「はそれを行うための任意のより良い方法はありますか?」実は

+0

これは、達成したいことによって異なります。 –

+0

なぜあなたは 'Object string =" [FIBER、CABLE] ";を使用していますか?'ではありません 'String string =" [FIBER、CABLE] "; –

+0

@MichaelMarkidis私はDBからObjectとして取得しています。 –

答えて

1

をあなたがリードする[、あなたは文字列をSPLT前末尾]を削除する必要があります。

Object obj = "[FIBER,CABLE]"; 

String str = (String) obj; 
if (! str.startsWith("[") || ! str.endsWith("]")) 
    throw new IllegalArgumentException("Bad data: " + str); 
String[] strArray = str.substring(1, str.length() - 1).split(",", -1); 

for (String s : strArray) 
    System.out.println(s); 

出力

FIBER 
CABLE 
1

を、あなたが現在持っている持っているもの最初の配列位置の空の文字列。

私の代わりにこれを行うだろう:

Object string = "[FIBER,CABLE]"; 

// cleaner to just cast it in a separate statement. 
String s = (String) string; 

// replace the "[" and "]" with "" and split on "," 
String[] strArray = s.replaceAll("[\\[\\]]", "").split(","); 

// from i = 0 and not i = 1 
for (int i = 0; i < strArray.length; i++) 
    System.out.println(strArray[i]); 

出力

FIBER 
CABLE 
0

正しい修正はここにあなたがテキストフィールドではなく、テーブル内の別の行として配列を格納しないようにデータベースをリファクタリングすることです。これを言うと、私はあなたがデータベースに挿入するプロセスにアクセスすることができないと仮定し、そのために何もできません。

手元の問題を考えれば、あなたのソリューションはよさそうです。

関連する問題