【欺骗异常 – Java 8 Lambdas】教程文章相关的互联网学习教程文章

欺骗异常 – Java 8 Lambdas【代码】

抛开检查异常和运行时异常的宗教争论,有很多次那些处理检查异常的例子的可怜构造类库就能让你发疯。考虑下面你可能想要写的一小段代码:publicvoid createTempFileForKey(String key) {Map<String, File> tempFiles =new ConcurrentHashMap<>();//不编译,因为抛出了IOExceptiontempFiles.computeIfAbsent(key, k -> File.createTempFile(key, ".tmp")); }为了正常编译你需要捕获这个异常。代码如下:publicvoidcreateTempFileFor...

java8的lambdas表达式模拟aop思想,封装一下锁功能【代码】

java8的lambdas,其实在编译后,会变为此类中的方法,lambdas表达式只不过是一种简单的语法。lambdas表达式其实就是模拟的c,c++语言中的函数指针,这两个语言都可以把函数当作方法的参数传递,但java中就不行了,因为java中一切都是类,方法必须依附于类而存活。 这就免不了java8之前出现的匿名类。不过java8简化了语法,但和命名类还是有实质的区别。我们可以利用aop思想,封装一下通用逻辑,客户端不必要考虑的非业务逻辑...

Java 8 Lambdas不起作用,Java 8中的所有其他工作都可以

我发现Java 8现在正式发布.似乎我需要Eclipse Luna 4.4才能工作.所以我下载了Luna并安装了它.我还从我的其他Eclipse导入了所有项目,一切都按预期工作.当我想尝试Java 8时,我很快发现我需要先安装它.安装完成后,我设法将JRE 8更改为默认值. 我的问题是:为什么我可以使用新的日期&时间API,但我不能使用新的Lambda表达式? 一些可能有用的信息: >我正在使用Mac>我非常确定API的工作时间(即使是小型Java Doc Box也表示它自1.8起) 它是...

Java Lambdas和Closures【代码】

我听说lambdas即将到达你附近的Java(J8).我在一些博客上找到了一个例子:SoccerService soccerService = (teamA, teamB) -> {SoccerResult result = null;if (teamA == teamB) {result = SoccerResult.DRAW;}else if(teamA < teamB) {result = SoccerResult.LOST;}else {result = SoccerResult.WON;}return result; };所以马上就开始了: > teamA和teamB在哪里打字?或者不是它们(就像一些奇怪的泛型)?> lambda是一种闭包,还是反过...

Java 8 lambdas组列表进入映射【代码】

我想拿一个List< Pojo>并返回Map< String,List< Pojo>>如果Map的键是Pojo中的String值,我们称之为String键. 澄清一下,给出以下内容: Pojo 1:Key:值:1 Pojo 2:Key:值:2 Pojo 3:键:b值:3 Pojo 4:键:b值:4 我想要一个Map< String,List< Pojo>> keySet()大小为2,其中键“a”具有Pojos 1和2,键“b”具有pojos 3和4. 我怎样才能使用Java 8 lambdas最好地实现这一目标?解决方法:看来简单的groupingBy变体就是你需要的:Map<...

java – 为什么消费者接受语句体而不是表达体的lambdas?【代码】

以下代码令人惊讶地成功编译:Consumer<String> p = ""::equals;这个也是:p = s -> "".equals(s);但这是失败的错误布尔值无法按预期转换为void:p = s -> true;使用括号修改第二个示例也会失败:p = s -> ("".equals(s));它是Java编译器中的错误还是我不知道的类型推断规则?解决方法:首先,值得看一下Consumer< String>实际上是. From the documentation:Represents an operation that accepts a single input argument andretur...

Java 9 Flow使用lambdas定义订户【代码】

我开始玩Java 9 Flow API,我发现并且不喜欢的第一件事,当我们将订阅者实现传递给发布者时,似乎我们不能使用lambdas,因为我们可以使用RxJava 所以我必须定义并实现我自己的Subscriber类public class CustomSubscriber<T> implements Flow.Subscriber<T> {protected Flow.Subscription subscription;@Overridepublic void onSubscribe(Flow.Subscription subscription) {this.subscription = subscription;System.out.println("Subsc...

java – 泛型类型实例化和Lambdas【代码】

我正在使用匿名函数和函数接口,我有一个功能接口,它接受两个相同类型的对象并返回true或false.package elementutils; @FunctionalInterface public interface TwoElementPredicate <T> {public boolean compare(T a, T b);}我使用另一个类中的函数接口来获取使用匿名函数的“更好的元素”,方法betterElement接受两个对象和功能接口的实例.然后我应该能够创建lambdas来比较main中相同类型的两个对象.package elementutils;public cl...

将List转换为List>仅使用java8 lambdas【代码】

我有List< User>其中User是一个具有变量id,name,date的类.我只想创建一个List< List< String>>使用它,它只包含第一个列表中的名称和日期.我的代码import java.util.*; import java.util.stream.*; public class User {int id;String name;Date date;public User(int id,String name,Date date){this.id=id;this.name=name;this.date=date;}public static void main(String[] args){User one=new User(1,"a",new Date());User two=n...

Java 8 Lambdas max()使用Integer.max作为比较器【代码】

参见英文答案 > Java 8 stream’s .min() and .max(): why does this compile? 5个我已经编写了带有示例值的简单列表,我希望流从Stream返回最大值.我知道max()函数需要Comparator,但事实证明,我也可以传递Integer :: max(任何人都可以解释我的,为什么?). 此外,程序打印出奇怪的结果,我在“内部”检查它看起来没问题,但在我得到最终结果后 – 它们不准确. 例:@Test public void testHowIntege...

在gs-uploaded-files Spring Boot示例中将Java 1.8 lambdas转换为Java 1.7【代码】

我在https://spring.io/ Spring Boot上进行了一些练习. 做一个例子https://spring.io/guides/gs/uploading-files/,当我使用Java 8时工作正常,但遗憾的是我在Web服务中包装的代码需要Java 7.我已经列出了所有的错误代码,有人可以帮我将lambda转换为符合1.7的代码并替换新库(java.util.stream.Stream和java.util.stream.Collectors). Application.java@SpringBootApplication @EnableConfigurationProperties(StorageProperties.clas...

java – 仅使用JDK8 Lambdas加入相同对象类型的列表【代码】

有没有办法只使用JDK8 Lambdas加入两个相同类型的列表(比如List< Computer> list1,list2;)?你能提供一个例子吗?解决方法:您可以将它们平面映射以获得组合流或列表:Stream<Computer> joined = Stream.of(list1, list2).flatMap(List::stream); List<Computer> list = joined.collect(toList());

使用scala.Future和Java 8 lambdas【代码】

scala Future类有几种基于函数式编程的方法.从Java调用时,看起来使用Java 8中的lambdas会很自然. 但是,当我尝试实际使用它时,我遇到了几个问题.以下代码无法编译someScalaFuture.map(val -> Math.sqrt(val)).map(val -> val + 3); 因为map将ExecutionContext作为隐式参数.在Scala中,您可以(通常)忽略它,但它需要在Java中显式传递.someScalaFuture.map(val -> Math.sqrt(val),ec).map(val -> val + 3,ec);这失败了,出现此错误:erro...

Java 8 – 有效的最终变量,lambdas和try / catch / finally块【代码】

所以我开始玩Java 8流/ lambda表达式,遇到了有趣的问题,我不确定如何解决.我在这里,请你帮忙. 有问题的示例代码:public void insertBlankPages(File inputFile, String outputFile, final int OFFSET) {PDDocument newDocument;PDDocument oldDocument;try {newDocument = createNewDocument();oldDocument = createOldDocument(inputFile);List<PDPage> oldPages = getAllPages(oldDocument);oldPages.stream().limit(oldPages.s...

像C-style函数指针一样使用Java Lambdas?【代码】

我对lambdas和Java8一般都是新手,所以如果这是一个简单的问题我会道歉. 我目前有一个课程,我希望在最后一个复杂的匹配上做一些getter:public final class Foo {public String getName();public Type getType();public List<Bar> getBarList();.... }我写了一个小辅助类来匹配:public class MatchParameter<T> {boolean expectMatch = true;T valueToCheck;public MatchParameter(T value, boolean shouldMatch) {this.expectMatc...

LAMBDA - 相关标签