请教一下 匿名内部类的几个问题

eisldkw 2020-03-08 04:16:49

代码如下:

j.setText("姓名");

j.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jActionPerformed(evt);

}
}


);

private void jActionPerformed(java.awt.event.ActionEvent evt) {

try {

jPassword.setEnabled(true);

}
}

请问,以上代码中,关于该匿名函数,我的理解和问题如下:

1、红色部分的{ } 就代表是一个函数 ,对吗

2、java.awt.event.ActionListener() 中 后面的() 什么作用,放在这儿好突兀?

3 、函数体 {} 前的 java.awt.event.ActionListener 是一个接口名,不是函数名, 也就是说该{} 函数前没有名字,所以叫匿名函数,对吗?
...全文
109 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
paullbm 2020-03-08
  • 打赏
  • 举报
回复
然后你 j.addActionListener(new ImplActionListener());
或者:j.addActionListener(new ImplActionListener("abc")) ;
就知道效果了!
paullbm 2020-03-08
  • 打赏
  • 举报
回复
引用 2 楼 eisldkw 的回复:
[quote=引用 1 楼 paullbm 的回复:]
1.第一层{}代表类体,第二层{}才代表的是一个函数
2.()代表的是无参构造函数,只不过是隐式写法,而非一般化的new实体对象后的显式调用
3.ActionListener是接口名,actionPerformed是必须实现的ActionListener接口中的方法!

补充说明:匿名内部类一般用于代码复用率非常低的场景下,所以不需要特别创建一个实体类来进行调用!


非常感谢。还有一点不明白,请问 2 中 您说 ()代表的是无参构造函数,只不过是隐式写法,那请问 显示的写法应该怎么写?[/quote]

比如,创建了一个实体类,内容如下

package csdn;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class ImplActionListener implements ActionListener {


public ImplActionListener() {
//无参构造函数
System.out.println("执行了无参构造函数:");
}

public ImplActionListener(String param) {
//带参构造函数
System.out.println("执行了带参构造函数:"+param);
}

@Override
public void actionPerformed(ActionEvent e) {

}

}


然后你 j.addActionListener(new ImplActionListener())
或者:j.addActionListener(new ImplActionListener("abc"))
就知道效果了!
eisldkw 2020-03-08
  • 打赏
  • 举报
回复
引用 1 楼 paullbm 的回复:
1.第一层{}代表类体,第二层{}才代表的是一个函数 2.()代表的是无参构造函数,只不过是隐式写法,而非一般化的new实体对象后的显式调用 3.ActionListener是接口名,actionPerformed是必须实现的ActionListener接口中的方法! 补充说明:匿名内部类一般用于代码复用率非常低的场景下,所以不需要特别创建一个实体类来进行调用!
非常感谢。还有一点不明白,请问 2 中 您说 ()代表的是无参构造函数,只不过是隐式写法,那请问 显示的写法应该怎么写?
paullbm 2020-03-08
  • 打赏
  • 举报
回复
1.第一层{}代表类体,第二层{}才代表的是一个函数
2.()代表的是无参构造函数,只不过是隐式写法,而非一般化的new实体对象后的显式调用
3.ActionListener是接口名,actionPerformed是必须实现的ActionListener接口中的方法!

补充说明:匿名内部类一般用于代码复用率非常低的场景下,所以不需要特别创建一个实体类来进行调用!

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧