将lambda表达式转换为JAVA 7

将lambda表达式转换为JAVA 7,java,lambda,java-8,java-7,Java,Lambda,Java 8,Java 7,我想利用本文提供的工具,这些工具基本上能够获取简单的POJO类,并输出生成的junit测试。但是,代码使用Java8(需要使用Java7)。Java7与下面的代码段相当于什么?需要转换的主要是lambda表达式 代码: 公共抽象类DtoTest{ /** A map of default mappers for common objects. */ private static final ImmutableMap<Class<?>, Supplier<t>>

我想利用本文提供的工具,这些工具基本上能够获取简单的POJO类,并输出生成的junit测试。但是,代码使用Java8(需要使用Java7)。Java7与下面的代码段相当于什么?需要转换的主要是lambda表达式

代码:

公共抽象类DtoTest{

/** A map of default mappers for common objects. */
private static final ImmutableMap<Class<?>, Supplier<t>> DEFAULT_MAPPERS;

static {
    final Builder<Class<?>, Supplier<?>> mapperBuilder = ImmutableMap.builder();

    /* Primitives */
    mapperBuilder.put(int.class, () -> 0);
    mapperBuilder.put(double.class, () -> 0.0d);
    mapperBuilder.put(float.class, () -> 0.0f);
    mapperBuilder.put(long.class, () -> 0l);
    mapperBuilder.put(boolean.class, () -> true);
    mapperBuilder.put(short.class, () -> (short) 0);
    mapperBuilder.put(byte.class, () -> (byte) 0);
    mapperBuilder.put(char.class, () -> (char) 0);

    mapperBuilder.put(Integer.class, () -> Integer.valueOf(0));
    mapperBuilder.put(Double.class, () -> Double.valueOf(0.0));
    mapperBuilder.put(Float.class, () -> Float.valueOf(0.0f));
    mapperBuilder.put(Long.class, () -> Long.valueOf(0));
    mapperBuilder.put(Boolean.class, () -> Boolean.TRUE);
    mapperBuilder.put(Short.class, () -> Short.valueOf((short) 0));
    mapperBuilder.put(Byte.class, () -> Byte.valueOf((byte) 0));
    mapperBuilder.put(Character.class, () -> Character.valueOf((char) 0));

    mapperBuilder.put(BigDecimal.class, () -> BigDecimal.ONE);
    mapperBuilder.put(Date.class, () -> new Date());

    /* Collection Types. */
    mapperBuilder.put(Set.class, () -> Collections.emptySet());
    mapperBuilder.put(SortedSet.class, () -> Collections.emptySortedSet());
    mapperBuilder.put(List.class, () -> Collections.emptyList());
    mapperBuilder.put(Map.class, () -> Collections.emptyMap());
    mapperBuilder.put(SortedMap.class, () -> Collections.emptySortedMap());

    DEFAULT_MAPPERS = mapperBuilder.build();
}
/**通用对象的默认映射器的映射*/
私有静态最终ImmutableMap,Supplier>mapperBuilder=ImmutableMap.builder();
/*原语*/
mapperBuilder.put(int.class,()->0);
mapperBuilder.put(double.class,()->0.0d);
mapperBuilder.put(float.class,()->0.0f);
mapperBuilder.put(long.class,()->0l);
mapperBuilder.put(boolean.class,()->true);
mapperBuilder.put(short.class,()->(short)0);
mapperBuilder.put(byte.class,()->(byte)0);
mapperBuilder.put(char.class,()->(char)0);
mapperBuilder.put(Integer.class,()->Integer.valueOf(0));
mapperBuilder.put(Double.class,()->Double.valueOf(0.0));
mapperBuilder.put(Float.class,()->Float.valueOf(0.0f));
mapperBuilder.put(Long.class,()->Long.valueOf(0));
put(Boolean.class,()->Boolean.TRUE);
mapperBuilder.put(Short.class,()->Short.valueOf((Short)0));
mapperBuilder.put(Byte.class,()->Byte.valueOf((Byte)0));
mapperBuilder.put(Character.class,()->Character.valueOf((char)0));
put(BigDecimal.class,()->BigDecimal.ONE);
put(Date.class,()->new Date());
/*集合类型*/
put(Set.class,()->Collections.emptySet());
put(SortedSet.class,()->Collections.emptySortedSet());
put(List.class,()->Collections.emptyList());
put(Map.class,()->Collections.emptyMap());
put(SortedMap.class,()->Collections.emptySortedMap());
默认_MAPPERS=mapperBuilder.build();
}

如果使用IntelliJ,可以使用展开表达式。
Alt+Enter->Expand lambda

注意,即使您可能被限制使用给定的Java版本运行部署的代码,您也可以在构建期间使用更新的版本进行测试。如果你将测试转移到一个单独的模块,Maven很容易做到这一点。在这种情况下,你还必须定义自己的接口来替换
供应商
@空指针或干脆完全删除
供应商
。从
到实际(不可变)
对象
的简单映射也可以。您只需删除
Date
,因为它不是不可变的,但由于使用映射的代码对映射中未包含的所有类型使用默认构造函数,因此没有理由将
Date
放在这里。