首页 > 解决方案 > Java - 字符串被检测为对象

问题描述

我正在尝试用java制作一个单位转换器来训练自己,但我在这里遇到了问题。

我有一个按钮来转换指定单位中的指定数字,所以我为我的按钮创建了一个动作监听器,它convert()用三个参数调用我的函数。这些参数是一个双精度和两个字符串。但是,我的字符串是来自 two 的单位JComboBox,所以我使用该方法.getSelectedItem来获取单位。但是,这个方法显然返回一个 Object (???) 而不是一个字符串。

我怎样才能确保我的单位通过这种方法得到保护?有没有可能是我的单位选得不好?我怎样才能得到一个字符串来调用我的convert()方法?

多谢你们 ! 这是我的问题的图像

标签: javastringactionlistener

解决方案


始终尝试使用泛型而不是使用没有类型安全的 like JComboBox,更好的方法是编写 likeJComboBox<String>以避免任何显式类型转换。对于您的场景,您还可以使用显式类型转换以及下面定义的代码,考虑到在组合框中选择了该项目,这两种方式都应该可以正常工作,否则代码将出现在某些异常中。

JComboBox<String> units1 = new JComboBox<>(); //use typesafety 
JComboBox<String> units2 = new JComboBox<>(); //use typesafety

String string1 = units1.getModel().getElementAt(units1.getSelectedIndex());
String string2 = units2.getModel().getElementAt(units2.getSelectedIndex());

推荐阅读