加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 声明匿名内部类

发布时间:2020-12-15 05:05:51 所属栏目:Java 来源:网络整理
导读:rb.addActionListener(new ActionEvent(ae) { public void actionPerformed(ActionEvent ae) { nowCall(ae); }}); 其他方式 Thread th=new Thread(Runnable r) { public void run() { // do something }};// notice the ending of above 2 snippets 看到这两
rb.addActionListener(new ActionEvent(ae) {
   public void actionPerformed(ActionEvent ae) {
     nowCall(ae);
    }
});

其他方式

Thread th=new Thread(Runnable r) {
  public void run() {
    // do something
  }
};

// notice the ending of above 2 snippets

看到这两个,我真的很困惑.似乎没有确切的模式来声明一个匿名的内部类.

请解释匿名内部类的语法.

解决方法

第二个是无效的,据我所知和测试.

更常见的是创建一个新的Runnable实现:

Thread th=new Thread(new Runnable() {
  @Override
  public void run() {
    // This implements Runnable.run
  }
});

现在你可以覆盖普通线程的run方法:

Thread th=new Thread() {
  @Override
  public void run() {
    // This overrides Thread.run
  }
};

…但我个人更喜欢在创建线程时单独指定Runnable.

现在你在最后注意到的区别仅在于表达式是否用作参数(例如,用于addActionListener方法或Thread(Runnable)构造函数,或者它是否只是直接赋值给变量.想想全新的TypeName( ){…}作为单个表达式,它只是区别:

Thread th = expression;

Thread th = new Runnable(expression);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读