Swing编程,关于ItemEvent类的对象e 的e.getItem()方法的问题。

查看API,得到e.getItem();的返回值是一个Object类型;图片说明

我在试验JCheckBox组件时,在注册监听器时想要用JLabel标签来显示所选中的复选框中的内容,label。setText();函数来完成。
但是它的参数。。。。。。。在这遇到了麻烦:
这是一种方法:
图片说明

这是另一种方法:
图片说明

wo理解第一种方法的正确性,但是对于第二种。。。。。这样直接对她强制转换为String类型到底对不对?不是很理解。要是说完全错误,我这还有一个正确的例子:
这是我在测试JComboBox的时候看到有些地方使用了这种强制转换(或者e.getItem().toString())仍然可以得到正确的结果!
图片说明

请问这个e.getItem()能不能通过强制转换或者.toString()方法直接获得内容?
如果能,在什么情况下能使用?为什么第三个图片不能完成要求?

import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

class MyFrame extends JFrame{

JPanel  jp = new JPanel();
JCheckBox  jcb1 = new JCheckBox("JAVA");
JCheckBox  jcb2 = new JCheckBox("C++");
JCheckBox  jcb3 = new JCheckBox("PHP");
JLabel  label = new JLabel("");

public MyFrame(){


    jp.add(new JLabel("选择语言:"));
    jp.add(jcb1);
    jp.add(jcb2);
    jp.add(jcb3);
    jcb1.addItemListener(new MyItemListener(jcb1));
    jcb2.addItemListener(new MyItemListener(jcb2));
    jcb3.addItemListener(new MyItemListener(jcb3));
    jp.add(label);
    add(jp);
    setTitle("JFrame 测试");
    setBounds(200,200,1000,400);
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private class MyItemListener   implements ItemListener{
    JCheckBox  box;
    public MyItemListener(JCheckBox  box){
        this.box = box;
    }
    @Override
    public void itemStateChanged(ItemEvent e) {
        if(e.getStateChange()==ItemEvent.SELECTED){
            label.setText(label.getText()+box.getText()+"、");
        }

    }

}

}

public class SwingTest{

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable(){
        @Override
        public void run() {
            new MyFrame().setVisible(true);

        }
    });
}

}

拿去玩吧!