![](/img/trans.png)
[英]Java/Netbeans: JList.getModel() returns a ListModel instead of a DefaultListModel
[英]Casting from a ListModel into a DefaultListModel in Java 7
如何将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
我尝试了以下方法
DefaultListModel<E> portalListModel = (DefaultListModel) portalList.getModel();
我觉得这是一个愚蠢的问题,但是我完全被这新的通用事物所迷惑! 请帮帮我!
Java集合的工作方式是可以使用集合类型的对象存储一大堆对象。 在引入泛型之前,您可以将任何对象存储在Collection中,然后当您想从集合中删除这些Object时必须执行强制转换。
List myList = new ArrayList();
myList.add("string");
myList.add(new MyValueClass(42, "identifying string"));
那是完全可以接受的代码。 如果要遍历对象,可以这样进行:
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.
}
在Java 1.5中,泛型在插入列表时提供了编译时类型检查。 因此,现在,如果将myList
声明为List<String>
,则当您尝试向列表中添加MyValueClass
类型的对象时,上面的第一段代码将在编译时失败。
在Java 1.7中, DefaultListModel
是通用的。 因此,当您调用portalList.getModel()
,您将取回一个DefaultListModel
,其中包含某种类型的对象( <E>
是它的类型;它是实际对象类型的占位符。)在上面的List<String>
例如, String
是E
的替代。
因此,如果您的portalList
对象的model
成员是DefaultListModel
,其中包含一堆MyValueClass
对象,则您的声明应类似于:
DefaultListModel<MyValueClass> portalListModel = portalList.getModel();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.