zoukankan      html  css  js  c++  java
  • 内部类与Lambda

    Java内部类
    内部类又称为嵌套类,是在类中定义另外一个类。内部类可以处于方法内/外,内部类的成员变量/方法名可以和外部类的相同。内部类编译后会成为完全不同的两个类,分别为outer.class和outer$inner.class类。外部类只能是public或者默认。

    内部类的作用

    1. 内部类可以很好的实现隐藏。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以
    2. 内部类拥有外围类的所有元素的访问权限 (private修饰也能访问)
    3. 可实现多重继承 (让多个内部类分别继承多个其他类,使外部类可以同时获取多个其他类的属性)
      4 .可以避免修改接口而实现同一个类中两种同名方法的调用。(外部类继承,让内部类实现接口)

    Java Lambda的演进
    复制代码
    public class LambdaTest {

    class Chinese2 implements People {
        @Override 
        public void speak(String content) { System.out.println(content); }
    }
    
    private static class Chinese3 implements People {
        @Override 
        public void speak(String content) { System.out.println(content); }
    }
    
    public static void main(String[] args) {
        People people;
        // 1.普通类
        people = new Chinese1();
        people.speak("test");
    
        // 2.非静态内部类
        people = new LambdaTest().new Chinese2();
        people.speak("test");
        
        // 3.静态内部类
        people = new Chinese3();
        people.speak("test");
    
        // 4.局部内部类
        class Chinese4 implements People { 
            @Override 
            public void speak(String content) { System.out.println(content); }
        }
        people = new Chinese4();
        people.speak("test");
        
        // 5.匿名内部类
        people = new People() { 
            @Override 
            public void speak(String content) { System.out.println(content); }
        };
        people.speak("test");
        
        // 6.lambda表达式
        people = (String content) -> { System.out.println(content); };
        people = (content) -> System.out.println(content);
        people.speak("test");
    }
    

    }

    interface People {
    void speak(String content);
    }

    class Chinese1 implements People {
    @Override
    public void speak(String content) { System.out.println(content); }
    }

    转载自https://www.cnblogs.com/anxiao/p/11231384.html

  • 相关阅读:
    SmartSql = Dapper + MyBatis + Cache(Memory | Redis) + ZooKeeper + R/W Splitting + ......
    SmartSql For Asp.Net Core 最佳实践
    如何通过本地化事件正确实现微服务内部强一致性,事件总线跨微服务间最终一致性
    Netty入门搭建
    IO同步阻塞与同步非阻塞
    NIO的缓冲区、通道、选择器关系理解
    SpringBoot整合ActiveMQ
    ActiveMQ的介绍及使用
    nginx入门(一)
    垃圾回收器及tomcat调优
  • 原文地址:https://www.cnblogs.com/xiaxiaopi/p/14336178.html
Copyright © 2011-2022 走看看