[英]generic method syntax using defaultlistmodel as an argument
DefaultListModel<String> strings = new DefaultListModel<String>();
DefaultListModel<Integer> integers = new DefaultListModel<Integer>();
private <T> void sortList(DefaultListModel<T> defaultListModel)
{
T objects[] = (T[])defaultListModel.toArray();
defaultListModel.clear();
Arrays.sort(objects);
for (T object: objects)
{
defaultListModel.addElement(object);
}
}
how can i write the above without getting an unchecked cast warning and without using @suppress? 我如何在没有得到未经检查的强制转换警告和不使用@suppress的情况下编写以上内容?
You are not doing anything worng. 你什么都没做。 The reason for unchecked cast warning is because the DefaultListModel toArray()
method is not generic . 取消选中警告的原因是因为DefaultListModel toArray()
方法不是通用的。 it returns an Object array which when you type cast to your generic class array T[]
, compiler gives the warning. 它返回一个Object数组,当您将类型转换为通用类数组T[]
,编译器会发出警告。 You can avoid the warnings by putting the below line above your method sortList:- 您可以通过将以下行放在方法sortList上方来避免警告:
@SuppressWarnings("unchecked")
private <T> void sortList(DefaultListModel<T> defaultListModel)
{
.....
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.