• JDK8 Lambda表达式对代码的简化


    只是举个例子:

          

    public class LambdaDemo {
        
        public static String findData( String name , LambdaInterface finder){
                                            
              return finder.getValue( name) ;
        }
    
    }
    public interface LambdaInterface {
        
        public String getValue(String key) ;
    
    }
    public class LambdaInterfaceTest {
        
        @Test
        public void test(){
            Map<String,String> map = new HashMap() ;
            map.put("a", "11") ;
            map.put("b", "22") ;
            
            String name = "a" ;
            System.out.println(LambdaDemo.findData(name, map::get) ) ;
        }
    
    }
    LambdaDemo.findData(name, map::get)这句代码其实完整形式是:

    @Test
        public void test1(){
            Map<String,String> map = new HashMap() ;
            map.put("a", "11") ;
            map.put("b", "22") ;
            
            
            
            String name = "a" ;
            System.out.println(LambdaDemo.findData(name,new LambdaInterface(){
    
                @Override
                public String getValue(String key) {
                    return map.get(key);
                }
                
            }) ) ;
        }

    由于 LambdaInterface 接口只有一个方法,且这个接口方法只有一个参数,且接口方法的实现只有一句代码,且这句代码只接收一个接口方法传入的参数,此时就符合Lambda表达式的精简要求了,所以

        

    LambdaDemo.findData(name,new LambdaInterface(){
    
                @Override
                public String getValue(String key) {
                    return map.get(key);
                }
                
            }) ;

    就可以简化成了
    LambdaDemo.findData(name, map::get)  这一句了
     
  • 相关阅读:
    UML类关系:依赖、关联、聚合、组合(收藏)
    java常用设计模式八:代理模式
    java常用设计模式三:原型模式
    java常用设计模式总览
    java常用设计模式七:装饰模式
    java常用设计模式六:适配器模式
    Sword C语言原子操作
    C语言 宽字符串
    C语言 字符串切割
    C语言 sscanf函数补充
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/7339375.html
Copyright © 2020-2023  润新知