1

文字列と tupleList を含むマップがあります。tupleList を double 配列に取得しようとしていますが、型キャスト例外が発生しています。私のコードは -

Map<String, TupleList> results = null; -- Some data in it and TupleList has int or double value.

public void drawGraph(){

    Object[] test = new Object[results.size()];
    int index = 0;
    for (Entry<String, TupleList> mapEntry : results.entrySet()) {
        test[index] = mapEntry.getValue();
        index++;
    }


       BarChart chart = new BarChart();
        chart.setSampleCount(4);
        String[] values = new String[test.length];
        for(int i = 0; i < test.length; i++)
        {
            values[i] = (String) test[i];


        }
       //  double[] values = new double[] {32,32,65,65};
         String[] sampleLabels = new String[] {"deny\nstatus", "TCP\nrequest", "UPD\nrequest", "ICMP\nrequest"};
         String[] barLabels = new String[] {"STATUS", "TCP", "UDP", "PING"};

         //chart.setSampleValues(0, values);
         chart.setSampleColor(0, new Color(0xFFA000));
         chart.setRange(0, 88);
         chart.setFont("rangeLabelFont", new Font("Arial", Font.BOLD, 13));

エラー - -

java.lang.ClassCastException: somePackagename.datamodel.TupleList cannot be cast to java.lang.String
at com.ibm.biginsights.ExampleAPI.drawGraph(ExampleAPI.java:177)
at com.ibm.biginsights.ExampleAPI.main(ExampleAPI.java:95)

私は例外@を取得しています

  String[] values = new String[test.length];
        for(int i = 0; i < test.length; i++)
        {
            values[i] = (String) test[i];

ありがとう

4

2 に答える 2

2

ここでエラーが発生していると想定しています: values[i] = (String) test[i];。問題は、タイプのオブジェクトを文字列にスローしようとしていることですTupleList。あなたがする必要がある.toString()のは、オブジェクトの文字列表現を与えるメソッドを呼び出すことです。

ただし、ニーズに合ったオブジェクトの文字列表現を取得できるように、クラスtoString()内のメソッドをオーバーライドする必要があることに注意してください。TupleList

要するに、実行test[i].toString()するだけで、次のような結果が得られる可能性が高くなりますTupleList@122545。あなたがする必要があるのはこれです:

public class TupleList
...

@Override
public String toString()
{
    return "...";
}

...
于 2012-08-10T05:51:55.527 に答える
1

明らかに、テスト配列には TupleLists が含まれています。あなたはそれらを追加します

    Object[] test = new Object[results.size()];
    int index = 0;
    for (Entry<String, TupleList> mapEntry : results.entrySet()) {
        test[index] = mapEntry.getValue();
        index++;
    }

そして、TupleList を String ang get ClassCastException にキャストします。必要に応じて toString を使用できます。

values[i] = test[i].toString();
于 2012-08-10T05:51:04.673 に答える