Java学习--Interface, inner class, anonymous inner class, lambda实例比较
2016-11-01 08:28
369 查看
通过接口,内部类,匿名内部类,lambda表达式实现一个相同的例子,该例子输出每隔一秒钟输出一条打印语句,同时弹出一个对话窗口,点击OK键,则程序退出。
Interface
TimerTest.java
package timer;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class TimerTest {
public static void main(String[] args) {
ActionListener listener = new TimePrinter();
Timer t = new Timer(10000, listener);
t.start();
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
TimerPrinter.java
package timer;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
public class TimePrinter implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
Toolkit.getDefaultToolkit().beep();
}
}----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
InnerClass
InnerClassTest.java
package innerClass;
import javax.swing.JOptionPane;
public class InnerClassTest {
public static void main(String[] args) {
TalkingClock clock = new TalkingClock(1000, true);
clock.start();
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
TalkingClock.java
package innerClass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class TalkingClock {
private int interval;
private boolean beep;
public TalkingClock(int interval, boolean beep) {
this.interval = interval;
this.beep = beep;
}
public void start() {
ActionListener listener = new TimePrinter();
Timer t = new Timer(interval, listener);
t.start();
}
public class TimePrinter implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
}
}
}
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
AnonymousInnerClass
AnonymousInnerClassTest.java
package anonymousInnerClass;
import javax.swing.JOptionPane;
public class AnonymousInnerClassTest {
public static void main(String[] args) {
TalkingClock clock = new TalkingClock();
clock.start(1000, true);
JOpti
4000
onPane.showMessageDialog(null, "Quiz program?");
System.exit(0);
}
}
TalkingClock.java
package anonymousInnerClass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class TalkingClock {
public void start(int interval, boolean beep) {
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
}
};
Timer t = new Timer(interval, listener);
t.start();
}
}
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Lambda
LambdaClockTest.java
package lambdaClock;
import javax.swing.JOptionPane;
public class LambdaClockTest {
public static void main(String[] args) {
LambdaClock clock = new LambdaClock();
clock.start(1000, true);
JOptionPane.showMessageDialog(null, "Quiz program?");
System.exit(0);
}
}
LambdaClock.java
package lambdaClock;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class LambdaClock {
public void start(int interval, boolean beep) {
Timer t = new Timer(interval, event ->
{
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
});
t.start();
}
}
注:Lambda是jdk 1.8新增加的功能,在jdk 1.7中会编译错误。
输出:
Interface
TimerTest.java
package timer;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import javax.swing.Timer;
public class TimerTest {
public static void main(String[] args) {
ActionListener listener = new TimePrinter();
Timer t = new Timer(10000, listener);
t.start();
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
TimerPrinter.java
package timer;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
public class TimePrinter implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
Toolkit.getDefaultToolkit().beep();
}
}----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
InnerClass
InnerClassTest.java
package innerClass;
import javax.swing.JOptionPane;
public class InnerClassTest {
public static void main(String[] args) {
TalkingClock clock = new TalkingClock(1000, true);
clock.start();
JOptionPane.showMessageDialog(null, "Quit program?");
System.exit(0);
}
}
TalkingClock.java
package innerClass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class TalkingClock {
private int interval;
private boolean beep;
public TalkingClock(int interval, boolean beep) {
this.interval = interval;
this.beep = beep;
}
public void start() {
ActionListener listener = new TimePrinter();
Timer t = new Timer(interval, listener);
t.start();
}
public class TimePrinter implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
}
}
}
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
AnonymousInnerClass
AnonymousInnerClassTest.java
package anonymousInnerClass;
import javax.swing.JOptionPane;
public class AnonymousInnerClassTest {
public static void main(String[] args) {
TalkingClock clock = new TalkingClock();
clock.start(1000, true);
JOpti
4000
onPane.showMessageDialog(null, "Quiz program?");
System.exit(0);
}
}
TalkingClock.java
package anonymousInnerClass;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class TalkingClock {
public void start(int interval, boolean beep) {
ActionListener listener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
}
};
Timer t = new Timer(interval, listener);
t.start();
}
}
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Lambda
LambdaClockTest.java
package lambdaClock;
import javax.swing.JOptionPane;
public class LambdaClockTest {
public static void main(String[] args) {
LambdaClock clock = new LambdaClock();
clock.start(1000, true);
JOptionPane.showMessageDialog(null, "Quiz program?");
System.exit(0);
}
}
LambdaClock.java
package lambdaClock;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import javax.swing.Timer;
public class LambdaClock {
public void start(int interval, boolean beep) {
Timer t = new Timer(interval, event ->
{
System.out.println("At the tone, the time is " + new Date());
if (beep) Toolkit.getDefaultToolkit().beep();
});
t.start();
}
}
注:Lambda是jdk 1.8新增加的功能,在jdk 1.7中会编译错误。
输出:
相关文章推荐
- 【JAVA学习】接口interface和抽象类abstract class的比较
- 【Java面试题】13 Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Java 学习笔记 (3) -抽象类 abstract 接口 interface 内部类 inner class 继承 extends 实现 implements 包 package
- 【python学习笔记】python中的模块,类,函数,对象,实例(与JAVA的比较)
- java 学习实例,实现空对象,和重写了,Comparator 的类实现了对于容器的比较!
- Java8学习:Lambda表达式、Stream API和功能性接口 — 教程、资源、书籍和实例
- Java教程 实战学习Struts实例
- C#学习实例-将比较复杂的结构序列化到文件中
- Java教程 实例学习Struts
- (源码实例)通过层DIV实现,当鼠标放在链接上面,显示图片及文字 - 流星絮语 JAVA学习笔记 - CSDNBlog
- Java教程 实战学习Struts实例
- [学习笔记]Java 中对文件的读写操作之比较
- Java的Inner Class的实例及作用分析
- Java教程 实战学习Struts实例
- Java教程 实例学习Struts
- Static Nested Class 和 Inner Class的不同。Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
- Eclipse vs NetBeans:两款一流的JAVA开源IDE的比较(图文及实例)
- Java教程 实例学习Struts
- Java中的接口与抽象类的比较、应用和实例 – 一个培训师不错的简洁解述
- Java教程 实例学习Struts