我有一个在编译时会引发以下警告的方法:
warning: [unchecked] unchecked generic array creation for varargs parameter of
type TableColumn<ObservableList,?>[] tableview.getColumns().addAll(Col);
我知道,如果该方法安全,则可以添加@SafeVarargs批注以禁止显示警告。但是,我不确定我的方法是否安全。另外,当我添加注释时(只是为了查看可能发生的情况),编译器给了我以下错误:
Invalid SafeVarargs annotation. Method InsertSQL(TableView<ObservableList>)
is not a varargs method.
public TableView InsertSQL(TableView<ObservableList> tableview)
这是整个有问题的方法:
private TableColumn<ObservableList, String> Col; //declared outside the
method at the beginning of the class.
@SafeVarargs
public TableView InsertSQL(TableView<ObservableList> tableview) {
try {
conn = DriverManager.getConnection(ConnCheck, user, password);
SysList = FXCollections.observableArrayList();
st = conn.prepareStatement(SysTableCall);
SysData = st.executeQuery();
for (int i = 0; i < SysData.getMetaData().getColumnCount(); i++) {
final int j = i;
Col = new TableColumn<>(SysData.getMetaData().getColumnName(i + 1));
Col.setCellValueFactory(new CallbackImpl(j));
//Col.setEditable(true);
if (i == 0) {
Col.setPrefWidth(344);
Col.setText("Record Number");
}
if (i == 1) {
Col.setPrefWidth(344);
Col.setText("Description");
}
tableview.getColumns().addAll(Col); //warning found on this line
}
while (SysData.next()) {
ObservableList<String> row = FXCollections.observableArrayList();
for (int x = 1; x <= SysData.getMetaData().getColumnCount(); x++) {
row.add(SysData.getString(x));
}
SysList.add(row);
}
tableview.setItems(SysList);
st.execute();
conn.close();
} catch (SQLException ex) {
try {
PreparedStatement st1 = conn.prepareStatement(SysTableCheck);
st.setString(1, RecCode);
ResultSet tempData = st1.executeQuery();
System.out.println(tempData.toString());
//Logger.getLogger(SysInfo.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex1) {
Logger.getLogger(SysInfo.class.getName()).log(Level.SEVERE, null, ex1);
}
}
return tableview;
}
我正在使用Java 8u40和Netbeans 8.0.2。理想情况下,我想处理警告(而不是抑制警告)。谢谢你。
由于数组和泛型问题,使用泛型实例调用varargs方法会导致这些警告。在您的情况下,只需使用add
方法,而不要addAll
使用一个参数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句