您的位置:首页 > 编程语言 > Java开发

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中会编译错误。
输出:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐