java-8 相关问题

将此标记用于特定于Java 8的问题,Java 8是2014年3月18日发布的Java平台的版本8(内部编号1.8)。在大多数情况下,您还应指定java标记。

如何从初始 LocalDateTime 和 cron 表达式获取下一个 LocalDateTime?

我有一个初始日期和一个 cron 表达式。我怎样才能找到满足这个 cron 表达式的下一个日期? 字符串 cronExpresion = "* * * * * *" LocalDateTime 初始 = LocalDateTime.n...

回答 4 投票 0

使用默认的通用 fork/join 池和 CompletableFuture 来进行长阻塞调用是不是不好的做法?

假设我有一个 CompletableFuture,它包装了一个阻塞调用,例如使用 JDBC 查询后端。在这种情况下,因为我没有将任何执行程序服务作为参数传递给 CompletableFuture。

回答 3 投票 0

使用 Java 8 Lambda \ Stream 从循环调用方法并返回值

我正在尝试在Java 8中转换下面的传统for循环。我尝试使用流的forEach迭代循环并使用过滤器进行包含检查,但我无法理解如何制作...

回答 3 投票 0

Java Streams:查找流是否包含 null

很可能是重复的,但我找不到任何特定的。 给定 公共静态无效主(字符串[] args){ System.out.println( Arrays.asList(null, null, 1) ...

回答 4 投票 0

Lambda 表达式和泛型仅在方法中定义

假设我有一个通用接口: 接口 MyComparable> { 公共 int 比较(T obj1,T obj2); } 以及方法排序: 公共静态 假设我有一个通用接口: interface MyComparable<T extends Comparable<T>> { public int compare(T obj1, T obj2); } 还有一个方法sort: public static <T extends Comparable<T>> void sort(List<T> list, MyComparable<T> comp) { // sort the list } 我可以调用此方法并传递 lambda 表达式作为参数: List<String> list = Arrays.asList("a", "b", "c"); sort(list, (a, b) -> a.compareTo(b)); 这样就可以了。 但是现在如果我将接口设置为非通用,并将方法设置为通用: interface MyComparable { public <T extends Comparable<T>> int compare(T obj1, T obj2); } public static <T extends Comparable<T>> void sort(List<T> list, MyComparable comp) { } 然后像这样调用: List<String> list = Arrays.asList("a", "b", "c"); sort(list, (a, b) -> a.compareTo(b)); 它无法编译。它显示 lambda 表达式错误: “目标方法是通用的” 好的,当我使用javac编译它时,它显示以下错误: SO.java:20: error: incompatible types: cannot infer type-variable(s) T#1 sort(list, (a, b) -> a.compareTo(b)); ^ (argument mismatch; invalid functional descriptor for lambda expression method <T#2>(T#2,T#2)int in interface MyComparable is generic) where T#1,T#2 are type-variables: T#1 extends Comparable<T#1> declared in method <T#1>sort(List<T#1>,MyComparable) T#2 extends Comparable<T#2> declared in method <T#2>compare(T#2,T#2) 1 error 从这个错误消息来看,编译器似乎无法推断类型参数。是这样吗?如果是的话,为什么会出现这样的情况? 我尝试了各种方法,通过互联网搜索。然后我发现了这篇JavaCodeGeeks文章,它展示了一种方法,所以我尝试了: sort(list, <T extends Comparable<T>>(a, b) -> a.compareTo(b)); 这又不起作用,与该文章声称的相反。也许它曾经在某些初始版本中工作过。 所以我的问题是:有没有办法为泛型方法创建 lambda 表达式?不过,我可以通过创建方法来使用方法引用来完成此操作: public static <T extends Comparable<T>> int compare(T obj1, T obj2) { return obj1.compareTo(obj2); } 在某些课程中说 SO,并将其传递为: sort(list, SO::compare); 如果功能接口中的方法具有类型参数,则不能将lambda表达式用于功能接口。请参阅 JLS8 中的第 §15.27.3 节: 如果 T 是函数接口类型(第 9.8 节)并且表达式与 [..] T.[ 的函数类型一致,则 lambda 表达式与目标类型 T 兼容 [..]。 .] 如果满足以下所有条件,则 lambda 表达式与函数类型全等 正确: 函数类型有 没有类型参数。 [..] 使用方法引用,我找到了其他方法来传递参数: List<String> list = Arrays.asList("a", "b", "c"); sort(list, Comparable::<String>compareTo); 只需将编译器指向通用比较器的正确版本即可 (Comparator<String>) 所以答案是 sort(list, (Comparator<String>)(a, b) -> a.compareTo(b)); 你的意思是这样的吗?: <T,S>(T t, S s)->... 这个 lambda 是什么类型?您无法在 Java 中表达这一点,因此无法在函数应用程序中编写此表达式,并且表达式必须是可组合的。 为了完成这项工作,您需要 Java 中对 Rank2 Types 的支持。 方法允许是通用的,但因此不能将它们用作表达式。然而,在传递它们之前,可以通过专门化所有必要的泛型类型来将它们简化为 lambda 表达式:ClassName::<TypeName>methodName List<String> list = Arrays.asList("a", "b", "c"); sort(list, Comparable::<String>compareTo); int compareTo (T o) 不是通用方法调用。虽然 Comparable<T> 是一个带有类型的接口。即使 compareTo 返回了 T,即 T compareTo (T o),它仍然不是通用方法。为了使其成为通用方法,它需要包含 type parameters 列表,即 <T> T compareTo (T o)。 lambda 表达式无法声明类型参数,因此它不能具有抽象方法为泛型的目标类型。 在这种情况下,你需要使用方法参考

回答 6 投票 0

modules/alpn-impl/alpn-1.8.0_202.mod 未找到

旧的jetty安装(jetty-9.4.3.v20170317 - 2017年3月17日)缺少JDK特定的mod文件modules/alpn-impl/alpn-1.8.0_202.mod未找到。我们使用java版本“1.8.0_202”。怎么办...

回答 1 投票 0

从 TestContainer 访问 Podman REST API

我使用 Maven 3 和 Podman 1.8.0 开发一个 Java 应用程序。据我了解,Podman 提供了与 Docker 兼容的 REST API。 Java集成测试使用TestContainer框架。 TestContainer 不是...

回答 2 投票 0

迭代列表列表并使用 Java 8 Stream API 检查条件

我正在尝试迭代元素列表的列表以测试给定的条件。 虽然 Java 7 可以实现这一点,但我很想知道如何使用 Stream API 在 Java 8 中实现这一点。 重要...

回答 1 投票 0

更新 Java 部署上的 Cybersource 证书时出错

在服务器上更新 Cybersource p12 证书(从其商家门户下载)后,我收到以下错误(应用程序通过 Docker 映像部署): com.cybersource.security.Exception.

回答 1 投票 0

如何禁用多模块maven项目中子模块中的某些强制执行器规则?

我在多模块 Maven 项目中使用 maven-enforcer 插件。假设我的项目结构如下 主要的 - 询问 - 贮存 我在主 pom 中的执行器插件如下所示 我在多模块 Maven 项目中使用 maven-enforcer 插件。假设我的项目结构如下 main - query - storage 我的 main pom 中的执行器插件如下所示 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>default</id> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <DependencyConvergence/> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> </builds> 在子模块(query)中,如果我需要禁用其中一个强制执行者规则(比如说DependencyConvergence),有人可以让我知道如何做到这一点吗? Maven 版本 - 3.6.1 据我所知,您无法禁用单个强制执行器规则。 您可以将 enforcer.skip 设置为 true - 这会禁用 所有 强制规则。 我在类似情况下做了什么: 我定义了自己的执行者规则,该规则继承自“官方”执行者规则。该强制执行者规则包含一个禁用它的开关。 这也在 maven 邮件列表中得到了回答。 如果所有配置都是通过管理的,则类似于以下内容 插件管理部分; <build><pluginManagement><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>alpha</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <DependencyConvergence/> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>bravo</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>alpha</id> <phase>validate</phase> </execution> </executions> </plugin> </plugins></builds> query/pom.xml <build><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>alpha</id> <phase></phase> </execution> <execution> <id>bravo</id> <phase>validate</phase> </execution> </executions> </plugin> </executions> </plugin> </plugins></builds> 您也可以通过属性来完成此操作,并在查询中定义 布拉沃执行而不是阿尔法。我使用过类似的技术 使用 maven-surefire-plugin,我使用 a 定义插件版本 属性并在根/父 pom 中具有默认值,并且在一个 特定的子pom我定义了一个不同的万无一失的版本。所以这个 可能有用... <build><pluginManagement><plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <version>3.0.0-M2</version> <executions> <execution> <id>alpha</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <DependencyConvergence/> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> <execution> <id>bravo</id> <phase></phase> <goals> <goal>enforce</goal> </goals> <configuration> <rules> <requireJavaVersion> <version>[1.8,)</version> <message>*** This project requires JDK 1.8/J2SE 8 or later. ***</message> </requireJavaVersion> </rules> <fail>true</fail> </configuration> </execution> </executions> </plugin> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> <execution> <id>${which-enforcer-id}</id> <phase>validate</phase> </execution> </executions> </plugin> </plugins></builds> <properties> <which-enforcer-id>alpha</which-enforcer-id> </properties> query/pom.xml <properties> <which-enforcer-id>bravo</which-enforcer-id> </properties> 约翰 您可以使用属性 enforcer.skipRules 禁用单个规则。作为命令行属性或子模块中的属性。 例如,您可以将以下属性放入子 pom 中以禁用规则 banTransitiveDependency,假设它是在父 pom 中配置的 <properties> <enforcer.skipRules>banTransitiveDependencies</enforcer.skipRules> </properties> 参见 https://maven.apache.org/enforcer/maven-enforcer-plugin/enforce-mojo.html#rulestoskip

回答 3 投票 0

将不带“Z”的日期字符串转换为偏移日期时间

我在正在解析的 json 响应中收到了像 2024-09-02T10:30:48.71 这样的特定日期字符串。我想使用 Java 将其转换为 OffsetDateTime。我看过一些例子......

回答 1 投票 0

将现有 Android 项目从 Java 8 迁移到 Java 11 时出现“错误:package android.view 不存在”错误

我正在开发多模块 Android 项目,目前该项目正在使用 Java 8,作为要求的一部分,我正在将此项目升级到 Java 11。下面是我迄今为止为实现目标所做的尝试...

回答 1 投票 0

带有 Java 8 即时请求参数的 Spring MVC GET 请求

我正在尝试编写一个 Spring MVC GET 控制器,它将 Java 8 Instant 作为请求参数: @GetMapping @JsonView(OrderListing.class) @验证 公共 WebSeekPaginatedResult...

回答 4 投票 0

在带有 JDK 8 的 IDEA 中使用 Eclipse 编译器时出现“java:名为 XXX 的重复方法”问题

通过以下简单的类,我得到了 java: 带有参数 () 和 () 的名为 spliterator 的重复方法继承自类型 java.util.List 和 java.lang.Iterable 呃...

回答 2 投票 0

如何在 Java API 中检索 Angular 应用程序登录的用户

我正在尝试检索 Java 应用程序中的登录用户。我尝试从角度应用程序身份验证模块调用它,但效果不佳。所以最后在

回答 1 投票 0

布尔值的Java流映射?

我有以下 DTO: @数据 公共类 MenuItemDTO { 私有 UUID siteUuid; 私有 UUID 产品Uuid; 私有布尔值 outOfStock; 公共 MenuItemDTO(MenuItem menuItem, 布尔值

回答 1 投票 0

对列表中对象的特定字段的值求和

假设有一个类Obj: 类 Obj { int 字段; } ...并且您有一个 Obj 实例的列表,即 List lst。 现在,我怎样才能用流找到 int fi 的值的总和...

回答 6 投票 0

在Map中查找数组值的重复出现

地图 nameWithLuckyNumbers = null; List> FinalGroup = new ArrayList<>(); nameWithLuckyNumbers.put("Vinay" , new int[]{1,...

回答 1 投票 0

Javafx fadetransition 不透明度错误

我在我的项目中使用淡入淡出过渡作为并行过渡的子级。我将业务逻辑的按钮不透明度从 1 更改为 0。当我更改不相关的 ToggleButtons'(不是 ... 的子级)时

回答 1 投票 0

Java 8 基于条件应用流过滤器

在Java 8中,有没有一种方法可以根据条件在流上应用过滤器, 例子 我有这个流 如果(isAccessDisplayEnabled){ src = (列表 < Source > ) sourceMeta.getAllSour...

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.