zoukankan      html  css  js  c++  java
  • JAVA8新特性详解

    .1 Lambda表达式和函数式接口

    它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理

    最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成,例如:

    Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );

    java.lang.Runnablejava.util.concurrent.Callable是函数式接口的最佳例子

    @FunctionalInterface
    public interface FunctionalDefaultMethods {
        void method();
    
        default void defaultMethod() {            
        }        
    }

     2.重复注解

    public class RepeatingAnnotations {
        @Target( ElementType.TYPE )
        @Retention( RetentionPolicy.RUNTIME )
        public @interface Filters {
            Filter[] value();
        }
    
        @Target( ElementType.TYPE )
        @Retention( RetentionPolicy.RUNTIME )
        @Repeatable( Filters.class )
        public @interface Filter {
            String value();
        };
    
        @Filter( "filter1" )
        @Filter( "filter2" )
        public interface Filterable {        
        }
    
        public static void main(String[] args) {
            for( Filter filter: Filterable.class.getAnnotationsByType( Filter.class ) ) {
                System.out.println( filter.value() );
            }
        }
    }

    3.接口中的默认和静态方法

    Java 8对接口进行了增强,允许接口具有已经实现了的方法。我们可以使用default 和static 关键字来创建带实现方法的接口。例如Iterable接口中的forEach方法便是一个默认方法

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
  • 相关阅读:
    CCF2014123集合竞价(C语言版)
    CCF2016092火车购票
    CCF2013123最大的矩形(C语言版)
    CCF2015122消除类游戏(C语言版)
    CCF2014032窗口(C语言)
    CCF2016093炉石传说(C语言版)
    go module 获取码云私有仓库代码
    centos7 编译安装 redis-6.0.5
    goland2019.2破解方法
    mac下protobuf配置记录
  • 原文地址:https://www.cnblogs.com/u013533289/p/11674614.html
Copyright © 2011-2022 走看看