Java:创建对象实例时带括号的类名

时间:2011-05-31 09:23:02

标签: java class object instance parentheses

在java代码中:

// Define ActionListener

ActionListener actionListener = new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

        JButton button = **(JButton)actionEvent.getSource();**
        int red = random.nextInt(255);
        int green = random.nextInt(255);
        int blue = random.nextInt(255);
        button.setBackground(new Color(red, green, blue));

    }
};

突出显示的内容(****)代码之间有什么作用?

我觉得很难研究这个主题,因为我不知道使用什么搜索词。 :○

希望任何人都可以提供帮助。 TIA

5 个答案:

答案 0 :(得分:6)

投射 actionEvent.getSource()返回JButton的对象。

您可以通过herehere了解一些信息。

答案 1 :(得分:0)

它获取你的行动的源,它假定它是一个JButton并将你的动作事件的源转换为JButton类。

答案 2 :(得分:0)

ActionEvent对象表示用户操作。根据您的代码,此操作已在JButton上执行。该对象有一个getSource()方法,它发送回发起事件的对象。但是,由于任何东西都可以发送此类事件,因此getSource()会发回一个无类型的Object。您需要将其强制转换为原始类型(Jbutton)才能使用此源(在此cas设置其背景中)。

检查http://download.oracle.com/javase/1.4.2/docs/api/java/util/EventObject.html#getSource()

答案 3 :(得分:0)

有趣的是(JButton)被称为 cast 。如果你完全确定你给出的A类对象(下面称为“foo”)确实是B类的一个实例,那么你可以使用强制转换,那么你就可以写

B bar = (B) foo;

然后根据需要使用bar变量。但请注意,如果foo实际上不是B的实例,则运行时将抛出ClassCastException。您可能还有兴趣阅读instanceof关键字。

答案 4 :(得分:0)

它被称为“铸造”类。 actionEvent.getSource()不仅可以返回任何JButton,还可以返回其他小部件。所以他们决定“让我们返回Object,因为一切都适合那里,让开发人员告诉java他期望的东西”,然后用它来表示(JButton)你说“我确定动作事件的来源是JButton而我想要像JButton“

那样访问它