我一直在为一个学校项目用 Java 编写一个非常基本的音乐播放器,我想通过实现一个音量滑块来增加一点活力。基本上,我一步一步地阅读了如何去做,它确实有效,但坦率地说,有一个元素我不明白,那就是

(JSlider)event.getSource();

方法。我不明白的是似乎在类型转换什么。为什么我需要将 event.getSource() 转换为 JSlider?而且我怎么能,因为 ChangeEvent 和 JSlider 没有(至少在我的理解中)子类/父类(super class)关系?

这里是完整的方法:
public void stateChanged(ChangeEvent event)
    {
        JSlider source = (JSlider)event.getSource();

        int volume = source.getValue();

        setVolume(volume);
    }

最佳答案

方法签名是



由于它返回 Object,因此必须将其转换为 JSlider 以将其分配给 JSlider 变量。一切都是 Object 的子类型;编译器不知道返回的 Object 是一个 JSlider。

关于java - 为什么这种方法需要类型转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21410089/

10-11 18:09