day75内部类之状态,使用理由。
2014-05-26 23:02
113 查看
回调(callback)是一种常见的程序设计模式,在java.swing包中有一个timer类,可以使用它在到达时间间隔时发出通告。
在程序设计语言中,可以提供一个函数名,定时器周期性地调用它,在java标准类中的类采用的是面向对象方法,它将某个类的对象传递给定时器,然后,定时器调用 这个对象的方法,由于对象可以携带一些附加的信息,所以传递对象比传递一个函数要灵活得多。java有函数指针的对应物----Method对象。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javaxswing.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);
}
}
class TimePrinter implement ActionLIstenr
publc void action Performed(actionEvent event){
Date now=new Date();
System.out.println("At the tone ,the time is"+now);
toolkit.getDefaultToolkit().beep();
}
//timerPrinter是timerTest的内部类。
javax.swing.JOptionPane中:static void showMEssageDialog(Component parent.Object message)显示一个包含一条消息和OK按钮的对话框,这个对话框将位于parent组件的中央,如果parent为null。
javjax.swing.timer:timer(int interval,ActionLIstener listener):构造一个定时器,每隔interval毫秒通告listener一次
void start()启动定时器,一旦启动成功,定时器将调用监听器的actionPerformed
void stop();终止定时器,一旦终止成功,定时器将不再调用监听器,actioPErformed
使用内部类有三个原因:一,内部类方法可以访问该类定义所在的作用域的数据,包装私有的数据。
二、内部类可以对同一个包中的其他类隐藏起来。三,当想到定义一个回调函数且不想编写大量的代码时,使用匿名(anonymous)内部类便捷。
嵌套是一种类之间的关系,而不是对象之间的关系。嵌套类有两个好处,命名控制和访问控制。内部类实现的机制就是要做到即使数据域设为公有,仍然不能其他代码所使用。内部类的对象还有一个隐式引用,它引用了,实例化该内部对象的外围类对象。
只有内部类可以是私有类,而常规类只能具有包的可见性,或公有的可见性。一个方法可以引用 调用 这个方法的对象数据域,而内部类既可以访问自身的数据域,也可以访问创建它的外围的对象的数据域。
在程序设计语言中,可以提供一个函数名,定时器周期性地调用它,在java标准类中的类采用的是面向对象方法,它将某个类的对象传递给定时器,然后,定时器调用 这个对象的方法,由于对象可以携带一些附加的信息,所以传递对象比传递一个函数要灵活得多。java有函数指针的对应物----Method对象。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javaxswing.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);
}
}
class TimePrinter implement ActionLIstenr
publc void action Performed(actionEvent event){
Date now=new Date();
System.out.println("At the tone ,the time is"+now);
toolkit.getDefaultToolkit().beep();
}
//timerPrinter是timerTest的内部类。
javax.swing.JOptionPane中:static void showMEssageDialog(Component parent.Object message)显示一个包含一条消息和OK按钮的对话框,这个对话框将位于parent组件的中央,如果parent为null。
javjax.swing.timer:timer(int interval,ActionLIstener listener):构造一个定时器,每隔interval毫秒通告listener一次
void start()启动定时器,一旦启动成功,定时器将调用监听器的actionPerformed
void stop();终止定时器,一旦终止成功,定时器将不再调用监听器,actioPErformed
使用内部类有三个原因:一,内部类方法可以访问该类定义所在的作用域的数据,包装私有的数据。
二、内部类可以对同一个包中的其他类隐藏起来。三,当想到定义一个回调函数且不想编写大量的代码时,使用匿名(anonymous)内部类便捷。
嵌套是一种类之间的关系,而不是对象之间的关系。嵌套类有两个好处,命名控制和访问控制。内部类实现的机制就是要做到即使数据域设为公有,仍然不能其他代码所使用。内部类的对象还有一个隐式引用,它引用了,实例化该内部对象的外围类对象。
只有内部类可以是私有类,而常规类只能具有包的可见性,或公有的可见性。一个方法可以引用 调用 这个方法的对象数据域,而内部类既可以访问自身的数据域,也可以访问创建它的外围的对象的数据域。
相关文章推荐
- 当不使用会话状态时禁用它
- Java Q&A: 使用Singleton模式?给我一个理由先!
- 测试时使用HSQL内存数据库的10个理由
- 我使用使用vs2005的理由
- 使用AJAX的十大理由
- 使用Web标准的十个理由
- 很有趣的一篇文章:不使用Linux的五大理由
- 使用VB监测屏保状态
- 使用 IPsec 与组策略隔离服务器和域-第3 章:确定 IT 基础结构的当前状态
- 我喜欢使用IntelliJ Idea的25个理由
- 会议室有三中状态,空闲,被申请,使用中
- 目前使用BCB的理由
- 转贴: 为什么要使用firefox火狐浏览器的17个理由(附加两条)
- ASP.NET页面状态管理——ViewState的使用
- ASP.NET WEB群集使用SQL Server保存状态
- EJB中JNDI的逻辑名的使用及部署_{EJB之无状态会话Bean简单应用-学习与实践}续(inber原作)
- 使用站内检索的五大理由
- 使用CSS标准开发的10大理由
- 使用AJAX的十大理由(译文)
- 不要使用Microsoft Project的理由