繁体   English   中英

Java对Vector.set()的调用导致“未选中”警告

[英]Java call to Vector.set() results in 'unchecked' warning

我正在扩展javax.swing.table.DefaultTableModel ,并添加了一个在类变量上调用Vector.set(...)的方法。 它导致unchecked警告,我想修复而不是抑制警告。 由于这不是扩展Vector ,因此我似乎无法使用<E> ,而且我也无法知道Vector中将包含哪种类型的Object 有什么建议吗?

方法:

/**
 * Replace a row in the dataVector.  Convenience method for 
 * getDataVector().set(index, element)
 * @param rowNum the index of the row to replace
 * @param replaceRow the element to be stored at the specified position
 * @return the element previously at the specified position
 * @throws ArrayIndexOutOfBoundsException if the index is out of range
 */
public Vector setRow(int rowNum, Vector replaceRow) {
  return (Vector)dataVector.set(rowNum, replaceRow);
}

结果是:

warning: [unchecked] unchecked call to set(int,E) as a member of the raw type Vector
return (Vector)dataVector.set(rowNum, replaceRow);
                             ^
where E is a type-variable:
E extends Object declared in class Vector
1 warning

对不起,我没有意识到的DefaultTableModel,用一个unparameterized,原始类型dataVector 我认为在这种情况下,您真正​​能做的就是为该函数添加一个@SuppressWarnings("unchecked")注释(这将使编译器停止抱怨),对其进行彻底的Javadoc处理,然后将其命名为:

/* DOCUMENT THIS THOROUGHLY */
@SuppressWarnings("unchecked")
public Vector setRow(final int rowNum, final Vector replaceRow) {
    return (Vector)dataVector.set(rowNum, replaceRow);
}

旧答案:

根据您的代码,看起来您真正想要做的是:

Vector<Vector<Object>> dataVector = new Vector<Vector<Object>>();

public Vector<Object> setRow(final int rowNum, final Vector<Object> replaceRow) {
    return dataVector.set(rowNum, replaceRow);
}

编写/设计代码的方式看来, dataVector实际上是一个“向量的向量”,其中每个元素(一个向量)都可以容纳任何种类的对象? 以这种方式在函数和dataVector使用泛型将消除未经检查的警告。

如果我误解了,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM