1

特定のサイズで 1 つのメソッドを初期化する際に TypeSafety の問題が発生するプロジェクトに取り組んでいます。私の実行方法では、黄色の線がありnew ArrayList[tableLists.size()]、不平を言っています-

Type safety: The expression of type ArrayList[] needs unchecked conversion to conform to ArrayList<Method>[]

以下はコードです。

private ArrayList<Method> methods[] = null;


    @Override
    public void run() {

        methods = new ArrayList[tableLists.size()];


    }

ここでこの問題を解決するにはどうすればよいTypeSafetyですか?

更新しました:-

    int j = 0;
    dbConnection = new Connection[tableLists.size()];
    callableStatement = new CallableStatement[tableLists.size()];
    methods = new ArrayList[tableLists.size()];

    //loop around the map values and make the connection list
    for (Map<String, String> map : tableLists.values()) {

        dbConnection[j] = getDBConnection(map.get("URL"), map.get("USER"), map.get("PASSWORD"), map.get("DRIVER"));
        callableStatement[j] = dbConnection[j].prepareCall(map.get("SQL"));

        methods[j] = getRequiredMethods(map.get("SUFFIX"));
        j++;
    }
4

1 に答える 1

3

ArrayListメソッド自体は特定の方法で分離されていないように見えるので、問題を完全に回避して、それらをすべて同じ に保存してみませんか?

ArrayList<Method> methods;

/* ... */

methods.addAll(getRequiredMethods(map.get("SUFFIX")));

配列とジェネリックは、お互いにあまりうまく機能しない傾向があります。本当に分離が必要な場合は、主なオプションが必要です。

  1. ArrayList<ArrayList<Method>>配列の代わりに を使用します。これにより、単純な配列をいじることなく、すべてをうまく処理できます。methodsその後、通常の配列と同様に、オブジェクトをサイズで効率的に初期化できます。

    methods = new ArrayList<ArrayList<Method>>(tableLists.size());
    
  2. 本当に配列を使用する必要がある場合は、おそらく@SuppressWarnings("unchecked")注釈を使用して警告を抑制する必要があります。これは醜くて迷惑なので、できれば避けたいと思います。
于 2013-02-13T06:18:41.297 に答える