当前位置: 首页 > 面试题库 >

JList.getModel()ClassCastException

吕峰
2023-03-14
问题内容

当我调用JList<String>.getModel()并将DefaultListModel<String>其强制转换为该异常时。

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JList$4 cannot be cast to javax.swing.DefaultListModel

抛出它的代码:

private JList<String> list = new JList<String>();
((DefaultListModel<String>) list.getModel()).addElement(...);

但是,并非每次都这样做。在大多数情况下,它运行正常,但在其他时候,它会抛出此异常。我不明白为什么会这样。我有什么办法可以阻止这种情况的发生?


问题答案:

您不应假定它是DefaultListModel。使用接口ListModel。JList返回ListModel的内部实现。

如果需要访问基础模型,则应创建它,在JList构造函数中进行设置并自己保留。



 类似资料:
  • 问题内容: 我有一个OSGi应用程序。使用EJB context.lookup,我必须将Thread上下文类加载器设置为bundle类加载器,以便进行转换。像这样: 输出是 org.apache.felix.framework.BundleWiringImpl@7468776f 此代码有效。如果我有ArrayList我无法转换的问题 此代码返回ClassCastException。 检查 返回NU

  • 问题内容: 在我的应用程序中,我需要将arraylist转换为数组的字符串。但是,我得到一个错误: 在与我在一起的错误: 这是完整的代码: 问题答案: 尝试 注意:我建议将listofurls重命名为arrayOfURLs

  • 问题内容: 我已经从SOAP服务下载了Soap消息,并试图通过返回下载的消息来模拟Soap服务。以下代码显示了我如何将Soap消息解组到所需的Response中 但是我一直得到这个ClassCastExeption,它是随机发生的。经过多次测试迭代后,它开始发生。有时清理并修复它,但有时不起作用。 我已经尝试了其他在线建议,例如恢复到旧的jaxb版本以及在maven编译器配置中使用认可的文件夹,但

  • 问题内容: 我使用maven-eclipse创建了一个新的Spring MVC项目,并引发以下错误: (我尝试了stackoverflow的一些解决方案,但这些解决方案在我的情况下不起作用。pom.xml出现了一些我找不到的问题。我为servlet- api添加了提供的作用域,并尝试了它也不起作用。) 我的pom.xml如下: 我的web.xml如下: 问题答案: 更改 至 具有以下说明: 这很像

  • 问题内容: 我有一个SOAP Web服务,正在尝试在应用程序内部调用。我正在使用cxf-codegen-plugin(3.1.10)从WSDL生成源。 使用生成的客户端,如果我在应用程序内调用Web服务,则效果很好。但是,我还针对导致问题的应用程序中的同一软件包使用了另一个JAXB实例。 例如,以下代码很好用: 但是,在此之前初始化一个新的JAXB实例会导致调用失败: 使用以下堆栈跟踪: 我试着接

  • 问题内容: 为什么投给打破,当是? 问题答案: 不幸的是,没有办法对中的数组进行这样的转换。您将必须迭代数组并分别转换每个对象。 原因是安全类型,根本无法确保无需迭代遍历数组的内容就可以将其转换为Uri,这就是为什么必须对其进行迭代并分别进行转换的原因。 基本上因为可以被其他对象继承,所以不能保证数组仅包含对象。但是强制转换为超类型将是可行的,因为那样的话,类型安全就可以了。