Tag: java 8

Java 8是否支持闭包?

我很困惑。 我认为Java8会从石器时代出现,并开始支持lambdas /封闭。 但是当我尝试: public static void main(String[] args) { int number = 5; ObjectCallback callback = () -> { return (number = number + 1); }; Object result = callback.Callback(); System.out.println(result); } 它说这个number should be effectively final 。 那是呃,不是我想的封闭。 这听起来像是在复制环境的价值,而不是参考。 奖金的问题! Android会支持Java-8的function吗?

Arrays.stream()。map()。sum()

我偶然发现了一个非常简单的在原始数组上映射/简化操作的性能曲线。 这是我的jmh基准代码: @OutputTimeUnit(TimeUnit.NANOSECONDS) @BenchmarkMode(Mode.AverageTime) @OperationsPerInvocation(Measure.ARRAY_SIZE) @Warmup(iterations = 300, time = 200, timeUnit=MILLISECONDS) @Measurement(iterations = 1, time = 1000, timeUnit=MILLISECONDS) @State(Scope.Thread) @Threads(1) @Fork(1) public class Measure { static final int ARRAY_SIZE = 1<<20; final int[] ds = new int[ARRAY_SIZE]; private IntUnaryOperator mapper; @Setup public void setup() { setAll(ds, i->(int)(Math.random()*(1<<7))); final int multiplier = (int)(Math.random()*10); mapper = […]

如何将LocalDate转换为SQL Date Java?

如何将LocalDate转换为java.sql.date? 尝试: Record r = new Record(); LocalDate date = new Date(1967, 06, 22); r.setDateOfBirth(new Date(date)); 这失败了,我能find的只有乔达时间的东西。 我正在使用Java 8

界面中静态和默认方法的区别

当我发现现在可以在界面中定义静态方法和默认方法时,我正在通过接口学习。 public interface interfacesample2 { public static void method() { System.out.println("hello world"); } public default void menthod3() { System.out.println("default print"); } } 请解释两者的区别,如果有一个例子,我们将使用这将是很好的。 对接口有点困惑。

forEach循环Java 8 for Map条目集

我试图将旧的常规每个循环直到java7到Java8的每个循环的地图条目设置,但我得到一个错误。 这是我想要转换的代码: for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue()); } 以下是我所做的更改: map.forEach( Map.Entry<String, String> entry -> { System.out.println("Key : " + entry.getKey() + " Value : " + entry.getValue()); }); 我也试着这样做: Map.Entry<String, String> entry; map.forEach(entry -> { System.out.println("Key : " + entry.getKey() + […]

为什么Java 8types推断不考虑Lambdas在重载select中抛出的exception?

我有一个关于lambda的Java 8推理及其相关的exception签名的问题。 如果我定义了一些方法foo: public static <T> void foo(Supplier<T> supplier) { //some logic … } 那么我可以写出foo(() -> getTheT());简洁明了的语义foo(() -> getTheT()); 在大多数情况下对于给定的T 然而,在这个例子中,如果我的getTheT操作声明它throws Exception ,那么我的foo方法就不再编译供应商了:供应商get方法签名不会抛出exception。 看起来像一个体面的方式来解决这个问题将是重载foo接受任一选项,重载的定义是: public static <T> void foo(ThrowingSupplier<T> supplier) { //same logic as other one … } ThrowingSupplier被定义为 public interface ThrowingSupplier<T> { public T get() throws Exception; } 这样,我们有一个供应商types抛出exception,一个不是。 所需的语法是这样的: foo(() -> operationWhichDoesntThrow()); //Doesn't […]

为什么在Java 8中没有BooleanConsumer?

恐怕这是一个有些愚蠢的问题。 有没有人可以告诉我为什么没有BooleanSupplier BooleanConsumer ? 除了“因为没有”以外,还有什么理由吗? 我应该创build一个自己的? 还是我错过了别的? public interface BooleanConsumer { void accept(boolean value); default BooleanConsumer andThen(final BooleanConsumer after) { return v -> { accept(v); after.accept(v); } } } 更新 在哪里使用? 我正在写一个使用大量消费者和供应商的图书馆。 我成功地写了一个LongConsumer的行,我遇到了一个情况,期望消费者接受一个来自方法结果的布尔值。 说Files.deleteIfExist ?

在Java中的lambda引用

我想将anonymous class转换为lambda expression 。 但是这个匿名类我使用this关键字。 例如,我写了这个简单的Observer/Observable模式: import java.util.ArrayList; import java.util.Collection; public static class Observable { private final Collection<Observer> notifiables = new ArrayList<>(); public Observable() { } public void addObserver(Observer notifiable) { notifiables.add(notifiable); } public void removeObserver(Observer notifiable) { notifiables.add(notifiable); } public void change() { notifiables.forEach(notifiable -> notifiable.changed(this)); } } public interface Observer { void changed(Observable […]

在部署到Apache 7.0.54和Java 8时,Spring上下文初始化失败,出现java.lang.IllegalArgumentException

环境:应用服务器:Apache 7.0.54 Java:“1.8.0_05”操作系统:Mac OS X 10.9.3 库:Spring 3.2 REST应用程序 以下是部署期间收到的错误: localhost.2014.06.09.log Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log INFO: No Spring WebApplicationInitializer types detected on classpath Jun 09, 2014 3:37:47 PM org.apache.catalina.core.ApplicationContext log INFO: Initializing Spring root WebApplicationContext Jun 09, 2014 3:37:47 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Exception sending context initialized event to listener instance of […]

迭代非列表最短的方法?

假设我有3个扫描器实例,我想closures。 我可以 sc.close() 为每个扫描仪。 或者我可以做类似的事情 for (Scanner sc: new Scanner[]{sc1,sc2,sc3}) { sc.close(); } 用Java 8做这个有什么简单的方法吗? 类似的东西? {sc1,sc2,sc3}.forEach((sc) -> sc.close());