Questions tagged «java-8»

对于2014年3月18日发行的Java平台的第8版(内部版本1.8)特定于Java 8的问题,请使用此标记。在大多数情况下,您还应该指定java标记。

3
Java 8 Stream中的forEach vs forEachOrdered
我知道这些方法的执行顺序不同,但是在我所有的测试中,我无法实现不同的执行顺序。 例: System.out.println("forEach Demo"); Stream.of("AAA","BBB","CCC").forEach(s->System.out.println("Output:"+s)); System.out.println("forEachOrdered Demo"); Stream.of("AAA","BBB","CCC").forEachOrdered(s->System.out.println("Output:"+s)); 输出: forEach Demo Output:AAA Output:BBB Output:CCC forEachOrdered Demo Output:AAA Output:BBB Output:CCC 请提供示例,说明两种方法将产生不同的输出。


7
Java 8 Streams FlatMap方法示例
我一直在检查即将发生的情况Java update,即:Java 8 or JDK 8。是的,我不耐烦,有很多新东西,但是,有些我不理解的东西,一些简单的代码: final Stream<Integer>stream = Stream.of(1,2,3,4,5,6,7,8,9,10); stream.flatMap(); javadocs是 public <R> Stream<R> flatMap(Function<? super T,? extends Stream<? extends R>> mapper) 返回一个流,该流包括将流中的每个元素替换为通过将提供的映射函数应用于每个元素而生成的映射流的内容而得到的结果。将每个映射流的内容放入此流后,将其关闭。(如果映射的流为null,则使用空流。)这是一个中间操作。 如果有人创建了一些简单的现实示例flatMap,我将不胜感激,您如何在以前的Java版本Java[6,7]中编写代码,以及如何使用编写相同的例程Java 8。

4
为什么此Java 8 lambda无法编译?
以下Java代码无法编译: @FunctionalInterface private interface BiConsumer<A, B> { void accept(A a, B b); } private static void takeBiConsumer(BiConsumer<String, String> bc) { } public static void main(String[] args) { takeBiConsumer((String s1, String s2) -> new String("hi")); // OK takeBiConsumer((String s1, String s2) -> "hi"); // Error } 编译器报告: Error:(31, 58) java: incompatible …

3
Java 8中异常类型推断的独特功能
在此站点上为另一个答案编写代码时,我遇到了这种特殊性: static void testSneaky() { final Exception e = new Exception(); sneakyThrow(e); //no problems here nonSneakyThrow(e); //ERRROR: Unhandled exception: java.lang.Exception } @SuppressWarnings("unchecked") static <T extends Throwable> void sneakyThrow(Throwable t) throws T { throw (T) t; } static <T extends Throwable> void nonSneakyThrow(T t) throws T { throw t; } 首先,我很困惑为什么sneakyThrow对编译器的调用正常。T当未提及任何未经检查的异常类型时,它推断出什么可能的类型? …

7
在Java 8中有什么方法可以将ZoneId转换为ZoneOffset吗?
我通过method1有一个纪元和一个zoneId。它可以使用系统默认的zoneId转换为LocalDateTime,但是我找不到通过method2将纪元转换为LocalDateTime的方法,因为没有ZoneOffset.systemDefault。我认为它是晦涩的。 import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset} val epochSecond = System.currentTimeMillis() / 1000 LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())//method1 LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)//method2

6
Java 8 Lambda表达式-嵌套类中的多个方法呢?
我在以下位置阅读有关新功能的信息:http : //www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html 我看到了下面的示例: 使用匿名类: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println("Action Detected"); } }); 使用Lambda: button.addActionListener(e -> { System.out.println("Action Detected"); }); 如果某人MouseListener想要在匿名类中实现多个方法,该怎么办,例如: public void mousePressed(MouseEvent e) { saySomething("Mouse pressed; # of clicks: " + e.getClickCount(), e); } public void mouseReleased(MouseEvent e) { saySomething("Mouse released; # of clicks: …

4
Java 8 Comparator类型推论非常困惑
我一直在研究Collections.sort和之间的区别list.sort,特别是在使用Comparator静态方法以及lambda表达式中是否需要参数类型方面。在开始之前,我知道我可以使用方法引用Song::getTitle来解决问题,例如,这里的查询不是我想要修复的东西,而是我想要解决的东西,即Java编译器为什么以这种方式处理它。 这些是我的发现。假设我们有一个ArrayListtype Song,添加了一些歌曲,有3种标准的get方法: ArrayList<Song> playlist1 = new ArrayList<Song>(); //add some new Song objects playlist.addSong( new Song("Only Girl (In The World)", 235, "Rhianna") ); playlist.addSong( new Song("Thinking of Me", 206, "Olly Murs") ); playlist.addSong( new Song("Raise Your Glass", 202,"P!nk") ); 这是对两种有效的排序方法的调用,没问题: Collections.sort(playlist1, Comparator.comparing(p1 -> p1.getTitle())); playlist1.sort( Comparator.comparing(p1 -> p1.getTitle())); 一旦开始链接thenComparing,就会发生以下情况: Collections.sort(playlist1, …

5
为什么Stream.allMatch()对于空流返回true?
我和我的同事有一个错误,这是由于我们假设allMatch()会返回空流调用而导致的false。 if (myItems.allMatch(i -> i.isValid()) { //do something } 当然,假设和不阅读文档是我们的错。但是我不明白的是为什么allMatch()空流的默认行为会返回true。这是什么原因呢?像anyMatch()(相反地返回false)一样,此操作以命令式使用,它离开了monad,并且可能在if语句中使用了。考虑到这些事实,是否有任何理由使大多数用途都需要allMatch()默认为true空流?

8
JDK 8中的默认值是Java中的一种多继承形式吗?
JDK 8中的一项新功能允许您在保留二进制兼容性的同时添加到现有接口。 语法就像 public interface SomeInterface() { void existingInterface(); void newInterface() default SomeClass.defaultImplementation; } 对于所有现有的实施方式,SomeInterface当他们升级到这个新版本时,并不会突然出现编译错误newInterface()。 虽然这很简洁,但是当您实现两个都添加了您未实现的新默认方法的接口时会发生什么呢?让我举例说明。 public interface Attendance { boolean present() default DefaultAttendance.present; } public interface Timeline { boolean present() default DefaultTimeline.present; } public class TimeTravelingStudent implements Attendance, Timeline { } // which code gets called? new TimeTravelingStudent().present(); 是否已将其定义为JDK …

11
在JRE 8中使用JavaFX,“访问限制”错误
当尝试在新的Java 8项目中使用与javafx相关的类时,我从Eclipse中收到访问限制错误。到目前为止,我唯一能找到的“解决方案”是让eclipse忽略访问限制,但是我对此并不满意。错误的示例: Access restriction: The type Pane is not accessible due to restriction on required library C:\Program Files\Java\jre8_0\lib\ext\jfxrt.jar 我将Eclipse Kepler与Eclipse JDT补丁用于Java 8。 这似乎与JavaFX不属于JavaSE执行环境的事实有关。 根据http://en.wikipedia.org/wiki/JavaFX的介绍,我现在感到非常困惑。javaFX是JavaSE的一部分。Eclipse是否有可能没有意识到它是javaSE的一部分?
83 java  eclipse  javafx  java-8 

5
如何将Java 8流收集到Guava ImmutableCollection中?
我要执行以下操作: List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); 但以某种方式得到的列表是Guava的实现ImmutableList。 我知道我能做 List<Integer> list = IntStream.range(0, 7).collect(Collectors.toList()); List<Integer> immutableList = ImmutableList.copyOf(list); 但我想直接收集。我试过了 List<Integer> list = IntStream.range(0, 7) .collect(Collectors.toCollection(ImmutableList::of)); 但它引发了一个例外: com.google.common.collect.ImmutableCollection.add(ImmutableCollection.java:96)上的java.lang.UnsupportedOperationException


10
Java 8:计算lambda迭代次数的首选方法?
我经常遇到同样的问题。我需要计算在Lambda之外使用的Lambda的运行次数。例如: myStream.stream().filter(...).forEach(item->{ ... ; runCount++); System.out.println("The lambda ran "+runCount+"times"); 问题是runCount必须是final,因此不能为int。它不能是整数,因为那是不可变的。我可以将其设置为类级别的变量(即字段),但是在此代码块中只需要它即可。我知道有各种各样的方法,我很好奇您对此的首选解决方案是什么?您是否使用AtomicInteger或数组引用或其他某种方式?


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.