55得票4回答
将一个密封类与一个非密封类进行扩展的意义何在?

我真的不太明白为什么在JEP-360 / Java 15中会有一个"non-sealed"关键字。对我来说,一个"sealed"类的扩展应该只能是"final"或者是一个"sealed"类本身。 提供"non-sealed"关键字会引发开发者的hack行为。 为什么我们允许一个"sealed...

28得票6回答
Java 14或15中的字符串插值

自从我使用Java 14和15的预览功能以来,一直在尝试找到Java中的字符串插值。 我找到的最接近的答案是 `String.format("u1=%s;u2=%s;u3=%s;u4=%s;", u1, u2, u3, u4)` 因为我从很多参考资料中得到的答案都是4、5年前的旧答案。在...

28得票3回答
在Java 15记录中,将值设置为其中一个属性

我在我的代码中使用了Java 15预览功能record,并将该record定义如下public record ProductViewModel ( String id, String name, ...

24得票3回答
如何在Java 15及更高版本中使用Nashorn?

我有一个现有的Spring Boot应用程序,该应用程序是非模块化的,并使用Nashorn。该应用程序在Java 14上运行良好。 在添加了适用于Java 15的新Nashorn的Maven坐标后,应用程序在启动脚本引擎时失败了。public static void main(String[]...

23得票4回答
如何在Java 15的文本块功能中添加变量?

刚刚发现了Java 15的一个新功能,即“文本块”。我可以假设通过使用“+”运算符与文本块连接可以添加变量,如下所示:String html = """ <html> <body> ...

22得票7回答
Java中的“sealed interface”有什么作用?

密封类和密封接口是Java 15中的预览功能,在Java 16中进行了第二次预览,现在计划在Java 17中发布。 它们提供了经典的示例,如Shape -> Circle,Rectangle等。 我理解密封类:提供的switch语句示例对我有意义。但是,密封接口对我来说是一个谜。实现接口的任何...

22得票1回答
C风格的数组不再适用于记录。

我之前使用这个人为编造的代码record Foo(int bar[]) {} 现在,随着Java 16中记录的正式发布,使用C风格数组符号的代码不再编译。以下是来自jshell的输出:jshell> record Foo(int bar[]) {} | Error: | legacy...

18得票1回答
静态常量字段 vs 可信的非静态字段

假设我有这个简单的方法:static final Integer me = Integer.parseInt("2"); static int go() { return me * 2; } 对于javac而言,me不是一个常量(根据JLS规则),但对于JIT来说...

15得票3回答
Java 15中密封类特性中,final和非密封类有什么区别?

我有以下封装接口(Java 15):public sealed interface Animal permits Cat, Duck { String makeSound(); } 这个接口被2个类实现:public final class Cat implements Animal...

10得票2回答
Lambda表达式和匿名类在作为隐藏类加载时无法正常工作。

我正在尝试在运行时编译和加载动态生成的Java代码。由于ClassLoader :: defineClass和Unsafe :: defineAnonymousClass在这种情况下都有严重的缺点,所以我尝试使用隐藏类通过Lookup :: defineHiddenClass来代替。这对于我尝...