问题标签 [java-15]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
786 浏览

java - Java记录构造函数通过反射不可见

我正在使用 Java 15 的新记录功能,以及它如何与反射交互。我遇到了一些奇怪的行为,有时我可以通过反射访问记录的构造函数,有时不能。例如,给定以下 Java 文件:

Recording.java

其行为如下:

换句话说,调用getConstructors()没有找到任何构造函数(而调用 `getDeclaredMethods() 确实找到了方法)。我不明白为什么不,因为构造函数确实存在:

(将记录放在单独的 Java 文件中会得到相同的结果。)

但是,如果我从 JShell 做同样的事情:

所以,现在它确实找到了构造函数。

这是我正在使用的 Java 版本:

从 Java 14 编译和运行相同的程序确实有效:

我知道在 Java 15 中,与 Java 14 相比,对记录的反射设置了许多限制,但如果我正确阅读JEP,这些限制仅适用于修改。寻找(也许是调用)构造函数似乎并不适用。

谁能告诉我这里发生了什么?我需要做什么才能通过反射在 Java 15 中查看记录的构造函数?

0 投票
1 回答
802 浏览

java - Java中密封类和最终类之间的区别

我刚刚读到 Java 15 应该有sealed类。 jep360说:

密封的类和接口限制了哪些其他类或接口可以扩展或实现它们。

我认为这正是 afinal class在 Java 中所做的。final class所以现在我想知道: a和 a 有什么区别sealed class

0 投票
1 回答
4962 浏览

java - 如何在 Eclipse 2020-09 中使用 Java 版本 15

我正在尝试在 Eclipse 2020-09 下运行新的 Java 15 功能。

我已经安装了 OpenJDK 15 并将其设置在“已安装的 JRE”下:

安装的jres

不过我不能将此版本设置为编译器版本(仅到版本 14):

编译器级别

我究竟做错了什么?

0 投票
2 回答
4236 浏览

soapui - Windows 8.1 上的 SoapUI 5.6.0 UnsupportedClassVersionError

我在 Windows 8.1 上安装了以下版本的 Java。JAVA_HOME环境变量指向新安装的 JDK 库。

当我启动 SoapUI 5.6 时,我收到以下错误消息:

0 投票
7 回答
2759 浏览

java - Java中的“密封接口”有什么意义?

密封类密封接口是 Java 15 中的一个预览功能,Java 16中有第二个预览,现在建议在 Java 17 中交付

他们提供了经典示例,例如Shape-> CircleRectangle等。

我了解密封switch提供的语句示例对我来说很有意义。但是,密封接口对我来说是个谜。任何实现接口的类都被迫为它们提供定义。接口不会损害实现的完整性,因为接口本身是无状态的。我是否想将实现限制为几个选定的类都没关系。

你能告诉我 Java 15+ 中密封接口的正确用例吗?

0 投票
1 回答
288 浏览

java - SDK 不支持选定的 Java 版本 15(最多 14 个)

我尝试在 Intellij IDEA Ultimate 中使用 Spring Initializr 创建一个新项目,但收到以下错误消息:

在此处输入图像描述

0 投票
2 回答
1023 浏览

java - Eclipse IDE 版本 2020-09 的 eclipse.ini 中的特定 JDK 使用 JDK 15,而不是系统环境变量中声明的默认 JDK

Eclipse 2020-09,错误:

在此处输入图像描述

在某些情况下,我必须将 Java 环境设置为 JDK 1.8 才能使 Gradle 正常工作。

在此处输入图像描述

文件eclipse.ini

但是 Eclipse 仍然没有启动。

我 PC 中的 JDK:

在此处输入图像描述

如何将 JDK 15 声明为eclipse.ini

0 投票
0 回答
332 浏览

java - 为什么 JDK 15 的时间 API 在 Linux 上提高了精度,但在 macOS 上却没有?

java.time.OffsetDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)在 Linux 上的 OpenJDK 15 (build 36) 上,第二个之后的精度为 9 位:

但是 macOS 上的相同命令(相同的 JDK 版本)只有 6 位数字:

Linux 和 macOS 上的 JDK 14 也只使用 6 位数字。

同一JDK版本上的体系结构之间的精度不应该相同吗?

0 投票
0 回答
115 浏览

java - 在 Tomcat JSP 页面中使用 JDK15 的 JEP 378 文本块

示例代码:

得到。

org.apache.jasper.compiler.JDTCompiler.generateClass 不支持的目标 VM [15] 请求,使用 [13]

/usr/local/tomcat/bin/version.sh 报告:

http://tomcat.apache.org/tomcat-10.0-doc/changelog.html我看到:

添加对将 Java 14(值为 14)和 Java 15(值为 15)指定为 JSP 编译的编译器源和/或编译器目标的支持。如果与不支持这些值的 ECJ 版本一起使用,将记录警告并使用最新支持的版本。(市场)

任何人都成功让文本块在非 alpha Tomcat 上工作?

0 投票
2 回答
118 浏览

java - Java泛型不可能赋值?

每次我认为我更好地理解泛型(并且可以在不编译的情况下回答)时,我都会遇到一个这个理论被打破的例子。这是一个非常简单的例子:

和两个调用:

对我来说,任何调用都不应该编译。AString不是 的超类型List。尽管如此,第二个编译。但是让我们假设发生这种情况是因为编译器可以在这里推断出某种类型。当然这样的类型不存在,它会在运行时失败,对吧?对?没有。它只是工作。因此,有人可以给我的生活带来一些理智吗?