美文网首页
Java - 类的嵌套(内部类)

Java - 类的嵌套(内部类)

作者: sunboximeng | 来源:发表于2018-06-03 23:48 被阅读6次

    内部类的例子:容器里的迭代器、链表里面的节点。
    内部类可以写在外部类的任意位置,如成员位置,方法内部。

    为什么引入内部类?

    • 补足多重继承
      java类只能单继承,一个类的内部如果还可以定义类,内部类就可以继续继承。
      解决父类和接口方法重名可能的冲突。
    • 闭包
      一个函数的“自由变量”就是既不是参数也不是局部变量的变量。
      外部环境持有内部函数所依赖的自由变量,就对内部函数形成了闭包。
    • 利用回调传递代码
      更简单的写法是利用Lambda表达式。
      如果我们要测试一个类的方法的执行时间,通常我们会这样做。缺点是代码是写死的。
      public class TestObject {
        /**
         * 一个用来被测试的方法,进行了一个比较耗时的循环
         */
        public static void testMethod() {
            for (int i = 0; i < 100000000; i++) {}
        }
      
        /**
         * 一个简单的测试方法执行时间的方法
         */
        public void testTime() {
            long begin = System.currentTimeMillis(); //测试起始时间     
            testMethod(); //测试方法     
            long end = System.currentTimeMillis(); //测试结束时间     
            System.out.println("[use time]:" + (end - begin)); //打印使用时间     
        }
      
        public static void main(String[] args) {
            TestObject test = new TestObject();
            test.testTime();
        }
      }   
      
      使用匿名内部类实现代码传递,增加代码的灵活性:
      public interface CallBack {
        //执行回调操作的方法     
        void execute();
      }
      
      public class Tools {
      
        /**
         * 测试函数使用时间,通过定义CallBack接口的execute方法
         *
         * @param callBack
         */
        public void testTime(CallBack callBack) {
            long begin = System.currentTimeMillis(); //测试起始时间     
            callBack.execute(); ///进行回调操作     
            long end = System.currentTimeMillis(); //测试结束时间     
            System.out.println("[use time]:" + (end - begin)); //打印使用时间     
        }
      
        public static void main(String[] args) {
            Tools tool = new Tools();
            tool.testTime(new CallBack() {
                //定义execute方法     
                public void execute() {
                    //这里可以加放一个或多个要测试运行时间的方法     
                    for (int i = 0; i < 100000000; i++) {}
                }
            });
        }
      
      } 
      

    相关文章

      网友评论

          本文标题:Java - 类的嵌套(内部类)

          本文链接:https://www.haomeiwen.com/subject/jflssftx.html