我正在开展一个项目,我在初始化一个特定大小的方法时遇到TypeSafety问题。在我的run方法中,我在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++;
}
答案 0 :(得分:1)
由于方法本身似乎没有以任何特定的方式分开,为什么不将它们全部存储在同一个ArrayList
中,完全绕过问题?
ArrayList<Method> methods;
/* ... */
methods.addAll(getRequiredMethods(map.get("SUFFIX")));
阵列和泛型相互之间往往不会很好玩。如果确实需要分离,则必须使用主要选项:
使用ArrayList<ArrayList<Method>>
代替数组。这将让你很好地处理所有事情而不会破坏普通数组。然后,您可以使用与常规数组一样的大小来有效地初始化methods
对象。
methods = new ArrayList<ArrayList<Method>>(tableLists.size());
@SuppressWarnings("unchecked")
注释来禁止警告。这是丑陋和烦人的,所以如果可以,我会避免它。