内部类代码

 1 package com.yj.fenghao.indoor;
 2 
 3 import java.awt.Toolkit;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 import java.util.Date;
 7 
 8 import javax.swing.Timer;
 9 
10 /**内部类
11  * 内部类可以是私有类  ---内部类既可以访问自身的数据域,也可以访问构造他的外围类对象的数据域
12  * 编译器修改类内部类的构造器,添加了对外部类的引用
13  * <P>Description: TODO</P>
14  * @ClassName: TimerClock
15  * @author 冯浩  2017年4月5日 下午1:19:08
16  * @see TODO
17  */
18 
19 public class TimerClock {
20     
21     private int intervel;
22     private boolean beep;
23     public TimerClock(int intervel, boolean beep) {
24         super();
25         this.intervel = intervel;
26         this.beep = beep;
27     }
28     
29     public class TimerPrinter implements ActionListener{
30 
31 //        private TimerClock out;
32 //        public TimerPrinter(TimerClock out){
33 //            this.out=out;
34 //        }
35         
36         public void actionPerformed(ActionEvent e) {
37             Date date=new Date();
38             System.out.println("at the now ,this is "+date);
39             if(beep){
40                 Toolkit.getDefaultToolkit().beep();
41             }
42 //            if(out.beep){
43 //                Toolkit.getDefaultToolkit().beep();
44 //            }
45         }
46         
47     }
48     
49     public void start(){
50 //        ActionListener listener=new TimerPrinter(this);
51         ActionListener listener=new TimerPrinter();
52         Timer t=new Timer(intervel,listener);
53         t.start();
54         
55     }
56 
57 }
 1 package com.yj.fenghao.indoor;
 2 
 3 import java.awt.Toolkit;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 import java.util.Date;
 7 
 8 import javax.swing.Timer;
 9 
10 import com.yj.fenghao.indoor.TimerClock.TimerPrinter;
11 
12 /**
13  * 局部内部类---作用域被限定在定义这个类的块中-----不仅能够访问包含他们的外部类,还能访问局部变量(必须定义成final)
14  * <P>Description: TODO</P>
15  * @ClassName: TimerClock2
16  * @author 冯浩  2017年4月6日 上午8:36:02
17  * @see TODO
18  */
19 public class TimerClock2 {
20     
21     private int intervel;
22     private boolean beep;
23     public TimerClock2(int intervel, boolean beep) {
24         super();
25         this.intervel = intervel;
26         this.beep = beep;
27     }
28     
29       public void start(){
30             class TimerPrinter implements ActionListener{
31                 public void actionPerformed(ActionEvent e) {
32                     Date date=new Date();
33                     System.out.println("at the now ,this is "+date);
34                     if(beep){
35                         Toolkit.getDefaultToolkit().beep();
36                     }
37                     
38                 }
39                 
40             }
41             ActionListener listener=new TimerPrinter();
42             Timer t=new Timer(intervel,listener);
43             t.start();
44             
45         }
46 
47 }
 1 package com.yj.fenghao.indoor;
 2 
 3 import java.awt.Toolkit;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 import java.util.ArrayList;
 7 import java.util.Date;
 8 import java.util.List;
 9 
10 import javax.swing.Timer;
11 
12 import com.yj.fenghao.indoor.TimerClock.TimerPrinter;
13 
14 /**
15  * 匿名内部类---不能有构造器,将构造器参数传递给超类
16  * <P>Description: TODO</P>
17  * @ClassName: TimerClock2
18  * @author 冯浩  2017年4月6日 上午8:36:02
19  * @see TODO
20  */
21 public class TimerClock3 {
22     
23     private int intervel;
24     private boolean beep;
25     public TimerClock3(int intervel, boolean beep) {
26         super();
27         this.intervel = intervel;
28         this.beep = beep;
29     }
30     
31       public void start(){
32            
33             ActionListener listener=new ActionListener(){
34 
35                 public void actionPerformed(ActionEvent e) {
36                     Date date=new Date();
37                     System.out.println("at the now ,this is "+date);
38                     if(beep){
39                         Toolkit.getDefaultToolkit().beep();
40                     }
41                 }
42                 
43             };
44             Timer t=new Timer(intervel,listener);
45             t.start();
46             
47         }
48       
49       public void t(){
50           this.test(new ArrayList(){{add("111");add("22222");}});
51       }
52       public void test(List<String> list){
53           
54       }
55 
56 }
 1 package com.yj.fenghao.indoor;
 2 
 3 
 4 /**
 5  * 静态内部类-没有对生成他的外围类的引用
 6  * <P>Description: TODO</P>
 7  * @ClassName: StaticInnerClass
 8  * @author 冯浩  2017年4月6日 上午9:09:31
 9  * @see TODO
10  */
11 public class StaticInnerClass {
12     
13     public static void main(String[] args) {
14         double[] d=new double[20];
15         for (int  i= 0; i < d.length; i++) {
16             d[i]=Math.random()*100;
17         }
18         ArrayAlg.Pair minMax = ArrayAlg.Pair.minMax(d);
19         System.out.println(minMax.getFirst());
20         System.out.println(minMax.getSecond());
21     }
22     
23     
24     
25 
26 }
27 class ArrayAlg{
28     public static class Pair{
29         private double first;
30         private double second;
31         public Pair(double first, double second) {
32             super();
33             this.first = first;
34             this.second = second;
35         }
36         public double getFirst() {
37             return first;
38         }
39         public double getSecond() {
40             return second;
41         }
42         
43         public static Pair minMax(double[] values){
44             double maxValue = Double.MAX_VALUE;
45             double minValue = Double.MIN_VALUE;
46             for (double d : values) {
47                 if(d>maxValue)maxValue=d;
48                 if(d<minValue)minValue=d;
49             }
50             return new Pair(maxValue,minValue);
51         }
52         
53         
54     }
55 }

内部类的简单代码,需要的时候看一下

关于这个定时器的完整功能代码,挺好玩的

 1 package com.yj.fenghao.indoor;
 2 
 3 import java.awt.Toolkit;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 import java.util.Date;
 7 
 8 import javax.swing.*;
 9 import javax.swing.Timer;
10 
11 
12 public class TimerTest {
13     public static void main(String[] args) {
14         
15         ActionListener listener=new TimerPrinter();
16         Timer t=new Timer(1000,listener);
17         t.start();
18         JOptionPane.showMessageDialog(null, "are you ok !");
19         System.exit(0);
20     }
21     
22     
23 
24 }
25 class TimerPrinter implements ActionListener{
26 
27     public void actionPerformed(ActionEvent e) {
28         Date date=new Date();
29         System.out.println("at the tone ,this time is +"+date);
30         Toolkit.getDefaultToolkit().beep();
31         
32     }
33     
34 }
原文地址:https://www.cnblogs.com/nihaofenghao/p/6671919.html