gpt4 book ai didi

java - 我可以使用 .getClass() == .class 或 .getClass() == .class.getClass() 吗?

转载 作者:行者123 更新时间:2023-11-30 01:42:20 25 4
gpt4 key购买 nike

我正在测试Object是否等于特定的class类型。例如:

@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
Object sourceObject = e.getSource();

if (sourceObject.getClass() == JComboBox.class.getClass()) {
@SuppressWarnings("unchecked")
JComboBox<String> jComboBox = (JComboBox<String>) sourceObject;

那么,我应该使用什么比较方法呢? sourceObject.getClass() == JComboBox.class.getClass()sourceObject.getClass() == JComboBox.class

或者简单地使用 instanceof 来比较是否可以安全地将 e.getSource() 强制转换为 JComboBox?

最佳答案

简短的回答:sourceObject.getClass() == JComboBox.class 是正确的。

someObj.getClass() 的结果是表示 someObj 类的 Class 对象。
SomeClass.class 也是表示 SomeClass 类的对应对象。
因此 SomeClass.class.getClass() 返回表示对象 SomeClass.class

的类的 Class 对象

此代码输出true

Date d = new Date();
System.out.println(d.getClass() == Date.class);

虽然这会产生编译错误。

Date d = new Date();
System.out.println(d.getClass() == Date.class.getClass());

关于java - 我可以使用 .getClass() == .class 或 .getClass() == .class.getClass() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59538976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com