Java:创建对象实例时带括号的类名
在java代码中:Java:创建对象实例时带括号的类名,java,class,object,instance,parentheses,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);
// 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));
}
};
突出显示的(介于**
和**
之间)代码是做什么的
我发现这方面的研究非常困难,因为我不知道该用什么搜索词o
希望有人能帮忙。TIA它将
actionEvent.getSource()
返回的对象强制转换为JButton
您可以反复阅读一些信息。这是将
actionEvent.getSource()
返回的对象转换为JButton
您可以反复阅读一些信息。它获取动作的源(假定为JButton),并将动作事件的源强制转换为JButton类。它获取动作的源(假定为JButton),并将动作事件的源强制转换为JButton类。对象表示用户操作。根据您的代码,此操作已在JButton上执行。此对象有一个getSource()方法,该方法将发回引发事件的对象。但是,由于任何东西都可以发送这样的事件,因此getSource()会发回一个非类型化的对象。您需要将其转换回其原始类型(Jbutton),以便能够使用此源(在此cas中设置其背景)
选中()ActionEvent对象表示用户操作。根据您的代码,此操作已在JButton上执行。此对象有一个getSource()方法,该方法将发回引发事件的对象。但是,由于任何东西都可以发送这样的事件,因此getSource()会发回一个非类型化的对象。您需要将其转换回其原始类型(Jbutton),以便能够使用此源(在此cas中设置其背景)
Check()有趣的是
(JButton)
,它被称为cast。如果您完全确定给定的类A(以下称为“foo”)的对象确实是类B的实例,则可以使用强制转换,然后您可以编写
B bar = (B) foo;
然后根据需要使用bar变量。但是请注意,如果foo不是B的真正实例,那么运行时将抛出一个
ClassCastException
。您可能还对阅读关键字感兴趣。有趣的是(JButton)
,它被称为cast。如果您完全确定给定的类A(以下称为“foo”)的对象确实是类B的实例,则可以使用强制转换,然后您可以编写
B bar = (B) foo;
然后根据需要使用bar变量。但是请注意,如果foo不是B的真正实例,那么运行时将抛出一个ClassCastException
。您可能还对阅读关键字感兴趣。它被称为类“铸造”。getSource()不仅可以返回JButton,还可以返回其他小部件。因此,他们决定“让我们返回对象,因为所有东西都适合它,让开发人员告诉java他期望的东西”,在前面加上(JButton),你是在说“我确定动作事件的源是一个JButton,我想像JButton一样访问它”它被称为类“casting”。getSource()不仅可以返回JButton,还可以返回其他小部件。因此,他们决定“让我们返回对象,因为所有东西都适合它,让开发人员告诉java他期望的东西”,在前面加上(JButton)你说的是“我确定动作事件的源是一个JButton,我想像JButton一样访问它”你读过这篇文章了吗?getSource
上的javadoc表示它返回“事件最初发生的对象”。这似乎很清楚。你不明白的是什么?你读过报纸了吗?getSource
上的javadoc表示它返回“事件最初发生的对象”。这似乎很清楚。你不明白的是什么?