Java 使用defaultlistmodel作为参数的泛型方法语法 DefaultListModel字符串=新的DefaultListModel(); DefaultListModel整数=新的DefaultListModel(); 私有无效排序列表(DefaultListModel DefaultListModel) { T objects[]=(T[])defaultListModel.toArray(); defaultListModel.clear(); 数组。排序(对象); 对于(T对象:对象) { defaultListModel.addElement(对象); } }

Java 使用defaultlistmodel作为参数的泛型方法语法 DefaultListModel字符串=新的DefaultListModel(); DefaultListModel整数=新的DefaultListModel(); 私有无效排序列表(DefaultListModel DefaultListModel) { T objects[]=(T[])defaultListModel.toArray(); defaultListModel.clear(); 数组。排序(对象); 对于(T对象:对象) { defaultListModel.addElement(对象); } },java,swing,generics,methods,defaultlistmodel,Java,Swing,Generics,Methods,Defaultlistmodel,我如何写上述内容而不得到未检查的强制类型转换警告和使用@suppress?您没有做任何工作。取消选中强制转换警告的原因是DefaultListModeltoArray()方法不是泛型的。它返回一个对象数组,当您键入cast到泛型类数组T[]时,编译器会给出警告。您可以通过在方法排序列表上方放置以下行来避免警告:- DefaultListModel<String> strings = new DefaultListModel<String>(); DefaultListMo



我如何写上述内容而不得到未检查的强制类型转换警告和使用@suppress?

您没有做任何工作。取消选中强制转换警告的原因是DefaultListModel
toArray()
方法不是泛型的。它返回一个对象数组,当您键入cast到泛型类数组
T[]
时,编译器会给出警告。您可以通过在方法排序列表上方放置以下行来避免警告:-

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);
    }
}
@SuppressWarnings(“未选中”)
私有无效排序列表(DefaultListModel DefaultListModel)
{
.....
}

您的第2行出现编译器错误(您需要从整数中删除“s”)。可能重复:@splungebob,谢谢提醒。我现在就把它删除。我不想压制警告,我想压制我的错误、缺乏知识和提高我的理解力。我怎样才能使它T[]?@johnny我不知道你能做什么来修复这个警告,除了抑制它,因为DefaultListModel是rt.jar中的一个类,作为jdk 7的一部分,我们不能修改它。如果JDK中提供的DefaultListModel中的toArray方法是泛型的(就像类一样),则不会出现此警告。所以我打赌你只需要取消警告。我最近读了一篇文章,上面说我写的是正确的,收到警告是“正常的”。谢谢你的回复。
@SuppressWarnings("unchecked")
private <T> void sortList(DefaultListModel<T> defaultListModel)
{
      .....
}