匿名内部类(Anonymous Inner Class),在创建实例的同时给出类的定义,所有这些在一个表达式中完成。

Java code?
1
2
3
4
Runnable rn = new Runnable() {
    public void run() {
    }
};

相当于:

Java code?
1
2
3
4
5
class Anomymous implements Runnable {
    public void run() {
    }
}
Runnable rn = new Anomymous();

可以看到前者更简洁。(注意前者最后的分号不能省略,编译器把整个看作一条语句)
不过,匿名内部类仅限于只实例化一次的内部类,如果内部类需要多次实例化,通常用后者。
另外,匿名内部类要么继承一个父类,要么实现一个接口,不能两者兼有,实现接口时也不能实现多个接口。关于该问题可以参考这贴:

匿名内部类(Anonymous Inner Class),在创建实例的同时给出类的定义,所有这些在一个表达式中完成。

Java code?
1
2
3
4
Runnable rn = new Runnable() {
    public void run() {
    }
};

相当于:

Java code?
1
2
3
4
5
class Anomymous implements Runnable {
    public void run() {
    }
}
Runnable rn = new Anomymous();

可以看到前者更简洁。(注意前者最后的分号不能省略,编译器把整个看作一条语句)
不过,匿名内部类仅限于只实例化一次的内部类,如果内部类需要多次实例化,通常用后者。
另外,匿名内部类要么继承一个父类,要么实现一个接口,不能两者兼有,实现接口时也不能实现多个接口。关于该问题可以参考这贴:

匿名内部类new Runnable()的更多相关文章

  1. 几种创建线程方式Thread类和Runnable接口

    对于很多想学习java的人来说,经常听别人说线程难,其实真正理解了线程后,一点都不会觉得线程难,这里我为大家梳理下线程的创建方式吧. 一.线程的创建方式有三种 1.继承Thread类 2.实现Runn ...

  2. Java—Lambda基础

    虽然JVM有着Scala .Groovy .Clojure 等依赖于JVM的函数语式语言,但直到Java8才算是java正式支持函数式编程: Java8中加入了Lambda的支持标志着Java正式加入 ...

  3. 多线程---优先级&yield方法

    优先级只有10级,1-10.最高10(java中用Thread.MAX_PRIORITY),最低1,中间级5. 设置优先级的方法是 线程对象.setPriority(5): yield : 暂停(不是 ...

  4. java基础(十三)-----详解内部类——Java高级开发必须懂的

    可以将一个类的定义放在另一个类的定义内部,这就是内部类. 为什么要使用内部类 为什么要使用内部类?在<Think in java>中有这样一句话:使用内部类最吸引人的原因是:每个内部类都能 ...

  5. java的四种内部类详解

    引言 内部类,嵌套在另一个类的里面,所以也称为:嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...

  6. 线程的加入.join()

    格式:以加入A线程为例 线程对象B.join()   无参数,则A线程一直暂停,直到B线程运行结束. 线程对象B.join(时间t)   有参数,则A线程每隔t时间暂停一次,直到B线程运行结束. 关于 ...

  7. java 之多线程

    多线程基本概念_程序_线程 1.1程序.进程.线程 程序:Program是一个指令的集合 进程:Process(正在执行中的程序)是一个静态的概念.进程是程序的一次静态执行过程,占用特定的地址空间.每 ...

  8. 9102年了,你还在用for循环操作集合?

    本文首发于cdream的个人博客,点击获得更好的阅读体验! 欢迎转载,转载请注明出处. 前段时间公司书架多了一本<Java8 实战>,毕竟久闻lambda的大名,于是借来一阅.这一看,简直 ...

  9. 类与接口(二)java的四种内部类详解

    引言 内部类,嵌套在另一个类的里面,所以也称为 嵌套类; 内部类分为以下四种: 静态内部类 成员内部类 局部内部类 匿名内部类 一.静态内部类 静态内部类: 一般也称"静态嵌套类" ...

随机推荐

  1. 变量赋值(引用) php内核的实现(二)

    <?php $a=1; $b=&$a; $c=2; $a=&$c; echo $a."\n"; echo $b; 2 1 结论: 首先保存 左值的内存地址, ...

  2. Access增删改查 (持续更新中)

    关于Access数据库(2003)的增删改查,其实和Sql大体差不多,但是还有很多不一样的地方.下面列几个容易犯的错误:  1.Access数据库的位置: conn = new OleDbConnec ...

  3. String的intern方法的用处

    今天第一次翻看Effective java,在其第一个item中讲静态工厂方法的有点的时候说到“它们每次被调用 的时候,不要非得创建一个新的对象”并在结尾处提到---"String.inte ...

  4. 【 D3.js 高级系列 — 4.0 】 矩阵树图

    矩阵树图(Treemap),也是层级布局的扩展,根据数据将区域划分为矩形的集合.矩形的大小和颜色,都是数据的反映.许多门户网站都能见到类似图1,将照片以不同大小的矩形排列的情形,这正是矩阵树图的应用. ...

  5. 剑指Offer:二进制中1的个数

    题目:输入一个整数,输出该数二进制表示中1的个数. // 二进制中1的个数 #include <stdio.h> int wrong_count_1_bits(int n) // 错误解法 ...

  6. HUST 1017 Exact cover dance links

    学习:请看 www.cnblogs.com/jh818012/p/3252154.html 模板题,上代码 #include<cstdio> #include<cstring> ...

  7. 【转】vnc centos

    原文:http://www.cnblogs.com/niocai/archive/2011/11/02/2233332.html 我的CentOS版本是6.0,下述方法在i386和x86_64中均适用 ...

  8. 用JSP做后台管理系统

    添加新闻 /**  * 获取从页面读取的数据  * @param request  * @return 单个新闻信息  * @throws UnsupportedEncodingException   ...

  9. PHP生成各种验证码和Ajax验证

    网址:http://www.helloweba.com/view-blog-191.html 源码下载地址: http://files.cnblogs.com/h07061108/php%E9%AA% ...

  10. 机器学习-----线性回归浅谈(Linear Regression)

    Linear Regreesion          在现实生活中普遍存在着变量之间的关系,有确定的和非确定的.确定关系指的是变量之间可以使用函数关系式表示,还有一种是属于非确定的(相关),比如人的身 ...