问题标签 [java-17]
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.
java - Java 17 中的密封类是什么
今天我将我的 java 版本从 16 更新到 17,我发现sealed
class 是其中的一个新特性。我认为可以这样声明——
但是java中密封类有什么用呢?
我也知道这是 jdk-15 中的预览功能
java - 从单一源代码为不同 Java 版本构建 Java 模块和旧 jar
我有带有 target 的 Maven Java 库项目1.8
。我想将它转换为现代客户端的 Java 模块,但保持旧客户端的向后兼容性,并为两个客户端发布新版本:
所以我的问题是如何正确添加module-info.java
到现有项目并能够将其编译为1.8
目标,以及如何配置 Maven 以部署两个 Java 版本的两个版本,例如 for1.8
和17
?
java - 如何在我的 AWS AMI Ec2 实例上安装 JDK 17?
我需要在我的AWS EC2 AMI实例上安装JDK 17 。
有什么命令吗?任何答案将不胜感激!
java - Eclipse 无法识别 Java-17
嗨,今天我安装了 java 17 和 eclipse(最新版本 - 2021-09)。但在所有配置之后,它将 JavaSE-16 显示为 jdk 版本。我忽略了它并开始编写一个带有密封类的程序。然后它显示错误。我通过从 eclipse 市场安装 Java-17 支持插件设法解决了这个问题。是否可以在 eclipse 中不安装任何东西。
java - 使用 JDK 17 的 Javassist
Javassist(版本 3.28.0-GA)在从 JDK 11 升级到 17 后停止工作。
调用CtClass#toClass
会出现以下错误:
有人知道解决方法吗?
java - java 17 特征向量对比。Java Util Vector,相同还是不同?
新 Java 17 SDK 中的所有新功能让我兴奋不已,但“矢量”确实让我感到困惑:
根据官方文档,Vector 是针对 CPU 密集型计算(例如硬核数学计算),可用于开发应用程序,例如 ML 算法
“Vector”这个词在我的脑海里触发了一个东西,就是Util模块中的类,和“ArrayList”一样,但是是线程安全的。在处理并发情况时,我会在我的代码中随意使用它。
现在,我很困惑。在谈到最新的 Java 17 中的“Vector”时,这两个“Vector”是一回事吗?还是完全不同?
java - 是否可以将 JMH 与 JDK 17 一起使用?
目前正在尝试将 JMH 1.33 与 JDK 17 一起使用。但是,以编程方式调用 JMH 似乎使用 sun.mis.Unsafe。由于 1.33 是 JMH 的最新版本,因此似乎不可能将 JMH 与 JDK 17 一起使用?我希望情况并非如此,因为我正在尝试对一些较新的 API 进行基准测试,因此使用旧版本的 JDK 对我来说不是一个选择。
我正在使用以下包装代码:
以下是我的 pom 文件的相关部分:
java - Java 中记录与类的 hashCode() 和 equals() 的默认实现
尝试使用示例代码检查记录与类的默认行为,但记录与equals()
类的行为似乎不同。hashCode()
这是记录和类的代码示例
上述代码执行后输出为:
谁能帮我理解记录s default implementation for
等于and
hashCode 的行为与上述不同吗?
如果记录equals
和hashCode
实施发生变化,那么请帮助我了解该变化的确切目的以及在哪些场景中使用它会更有帮助。
java - 如何在 Java 16+ 中强制执行特定的 TLS 版本而不设置全局属性
我知道可以使用全局属性强制执行特定的 TLS 版本,如下所示:
- 带代码:
System.setProperty("jdk.tls.client.protocols", "TLSv1.2");
- 或从命令行:
java -Djdk.tls.client.protocols=TLSv1.2 ...
有没有办法在每个上下文/引擎的 SSL 基础上更精细地做到这一点?例如,如果我想阻止在特定上下文中使用 TLSv1.3,并且只允许最高 TLSv1.2 的协议,该怎么办?
我以为是这样的:
但我的测试仍然显示 TLSv1.3 在 SSL 握手阶段蔓延。事实上,Java 16+ java doc 解释说“协议”参数保证提供者支持请求的 TLS 版本,但不一定限制提供者更高:
文档:
PS:我在这里找到了更接近我需要回答的内容: SSLContext.getInstance("TLS") 是否也支持 TLS v1.1 和 TLS v1.2?
假设答案是正确的(我认为不是),但是我确实想从特定的信任库和密钥库管理器初始化我的上下文,传递 NULL 对我来说是不可接受的。