Java - 字符串被检测为对象

时间:2021-02-01 19:06:42

标签: java string actionlistener

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

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

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

谢谢各位! Here is an image of my problem

2 个答案:

答案 0 :(得分:2)

总是尝试使用泛型而不是像 JComboBox 这样没有类型安全的使用,更好的方法是像 JComboBox<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());

答案 1 :(得分:0)

解决方案是在方法调用中强制转换参数。如代码所示

Solution

相关问题