如何将ListModel转换为DefaultListModel ?? 我执行以下操作,并收到此错误消息,
DefaultListModel portalListModel = (DefaultListModel) portalList.getModel();
C:\Documents and Settings\...\myfile.java:728: warning: [rawtypes] found raw type: DefaultListModel
DefaultListModel portalListModel = (DefaultListModel) portalList.getModel();
missing type arguments for generic class DefaultListModel<E>
where E is a type-variable:
E extends Object declared in class DefaultListModel
Run Code Online (Sandbox Code Playgroud)
我试过以下,
DefaultListModel<E> portalListModel = (DefaultListModel) portalList.getModel();
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,这是一个愚蠢的问题,但我完全被这个新的通用事物所困扰!请帮帮我!
Java集合的工作方式是您可以使用Collection类型对象来存储一大堆对象.在引入Generics之前,您可以将任何对象存储在Collection中,然后在想要从集合中获取这些对象时必须执行强制转换.
List myList = new ArrayList();
myList.add("string");
myList.add(new MyValueClass(42, "identifying string"));
Run Code Online (Sandbox Code Playgroud)
这是完全可以接受的代码.如果你想迭代对象,你可以这样做:
Iterator it = myList.iterator();
while (it.hasNext()) {
String str = (String) it.next(); // NOTE: This will work the first time, but throw a ClassCastException when it gets to the second item.
}
Run Code Online (Sandbox Code Playgroud)
使用Java 1.5,Generics在插入列表时提供编译时类型检查.所以现在,如果你声明myList为a List<String>,当你尝试向MyValueClassList 添加一个类型的对象时,上面的第一个代码块将在编译时失败.
在Java 1.7中,DefaultListModel是通用的.因此,当您调用时portalList.getModel(),您将返回DefaultListModel包含特定类型对象的对象(这就是<E>它;它是实际对象类型的占位符.)在上面的List<String>示例中,String是替换E.
因此,如果您的portalList对象的model成员是DefaultListModel包含一堆对象的成员MyValueClass,那么您的声明应如下所示:
DefaultListModel<MyValueClass> portalListModel = portalList.getModel();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3545 次 |
| 最近记录: |