[Core Java. Volume I. Fundamentals, 8th Edition]-6

模板类型接口

NOTE: As of Java SE 5.0, the Comparable interface has been enhanced to be a generic type. 

                            public interface Comparable<T> 
                             { 
                               int compareTo(T other); // parameter has type T 
                             } 
       For example, a class that implements Comparable<Employee> must supply a method 
                            int compareTo(Employee other) 

       You can still use the “raw” Comparable type without a type parameter, but then you have to manually cast the parameter of the compareTo method to the desired type. Allmethods of an interface are automatically public.Just as methods in an interface are automatically public, fields are always public static final


inner class 

内部类可以访问外部类的所有变量

 outer class reference of an inner class         

OuterClass.this 
如     if ( TalkingClock.this.beep) Toolkit.getDefaultToolkit().beep();

 you can write the inner object constructor more explicitly, using the syntax 
                          outerObject .new InnerClass(construction parameters) 
如                          TalkingClock jabberer = new TalkingClock(1000, true); 
                          TalkingClock.TimePrinter listener = jabberer.new TimePrinter(); 


Accessing final Variables from Outer Methods 
    Local classes have another advantage over other inner classes. Not only can they access the fields of their outer classes, they can even access local variables! However, those local variables must be declared final. Here is a typical example. Let’s move theinterval and beep parameters from the TalkingClock constructor to the start method. 
                      public void start(int interval, final boolean beep) 
                      { 
                         class TimePrinter implements ActionListener 
                         { 
                            public void actionPerformed(ActionEvent event) 
                            { 
                                if (beep) Toolkit.getDefaultToolkit().beep(); 
                            } 
                        } 

                      } 
final int[] counter = new int[1]; 
(The array variable is still declared as final, but that merely means that you can’t have it refer to a different array. You are free to mutate the array elements.) 


匿名内部类

 When using local inner classes, you can often go a step further. If you want to make only a single object of this class, you don’t even need to give the class a name. Such a class is called an anonymous inner class. 

                     public void start(int interval, final boolean beep) 
                     { 
                        ActionListener listener = new ActionListener() 
                           { 
                              public void actionPerformed(ActionEvent event) 
                              { 
                                 ///
                              } 
                           }; 
                     } 
    new SuperType(construction parameters) 
    { 
             inner class methods and data 
    } 
       Here, SuperType can be an interface, such as ActionListener; then, the inner class implements that interface. Or SuperType can be a class; then, the inner class extends that class. 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值