java - Java - 字符串被检测为对象
问题描述
我正在尝试用java制作一个单位转换器来训练自己,但我在这里遇到了问题。
我有一个按钮来转换指定单位中的指定数字,所以我为我的按钮创建了一个动作监听器,它convert()
用三个参数调用我的函数。这些参数是一个双精度和两个字符串。但是,我的字符串是来自 two 的单位JComboBox
,所以我使用该方法.getSelectedItem
来获取单位。但是,这个方法显然返回一个 Object (???) 而不是一个字符串。
我怎样才能确保我的单位通过这种方法得到保护?有没有可能是我的单位选得不好?我怎样才能得到一个字符串来调用我的convert()
方法?
多谢你们 ! 这是我的问题的图像
解决方案
始终尝试使用泛型而不是使用没有类型安全的 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());
推荐阅读
- gcc - 使用 -ffile-prefix-map 会中断调试
- c++ - 为什么 STL 算法明确需要两个迭代器?
- css - 多少关键帧就是太多关键帧。CSS
- node.js - 电子中未生成应用程序更新 yml 文件的问题?
- azure - Azure DataFactory 自托管集成运行时现在显示在门户中
- vue.js - 为什么在 vue-ctk-date-time-picker 中禁用了分钟?
- kubernetes - 有什么方法可以知道服务在 Kubernetes 中哪个 pod 负载均衡?
- angular - 如何使用Angular 7在每个逗号后读取一个字符串
- laravel - Lumen8 删除方法不起作用 其他 Get put 和其他正在工作
- python - 无法安装 pypy 沙箱