Java 14 有许多新特性。其中之一是在 NullPointerException 中显示详细消息。我安装了 Java 14 并尝试在类下编译和运行,但没有收到任何详细消息。我错过了什么吗?请帮忙。
~/code/demo/temp$ java -version
openjdk version "14" 2020-03-17
OpenJDK Runtime Environment AdoptOpenJDK (build 14+36)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.19.0, JRE 14 Mac OS X amd64-64-Bit Compressed References 20200313_47 (JIT enabled, AOT enabled)
OpenJ9 - 0133ba037
OMR - 1c04e0ef9
JCL - a73be60649 based on jdk-14+36)
~/code/demo/temp$ cat Hello.java
public class Hello {
public static void main(String args[]) {
String a = null;
System.out.println(a.length());
}
}
~/code/demo/temp$ javac Hello.java
~/code/demo/temp$ java -XX:+ShowCodeDetailsInExceptionMessages Hello
Exception …Run Code Online (Sandbox Code Playgroud) 我正在执行下面的代码片段
System.out.println(List.of(1, 2).getClass());
System.out.println(List.of(1, 2, 3).getClass());
Run Code Online (Sandbox Code Playgroud)
这段代码的输出是;
class java.util.ImmutableCollections$List2
class java.util.ImmutableCollections$ListN
Run Code Online (Sandbox Code Playgroud)
我期待java.util.ImmutableCollections$List3作为第二个语句的输出,因为有一个of()方法需要三个参数,为什么java创建ImmutableCollections$ListN但不是ImmutableCollections$List3?
编辑:这是Java-9问题.在List接口中总共有11个重载的()方法,每个方法从0到10采用可变数量的参数,第11个采用varargs来处理N列表.所以我期待前10个重载方法的List0到List10实现,但它返回带有三个参数的ListN.是的,这是实施细节,但只是想了解更多相关信息.
我使用以下命令创建了一个 micronaut 项目
mn create-cli-app micronaut-cli
Run Code Online (Sandbox Code Playgroud)
在项目中,我创建了一个 @Singleton 类,并将它注入到我的 Command 类中,但注入不起作用,因为对象始终为空。
我的单身课程:
@Singleton
public class ConverterService {
public String service(){return "good service";}
}
Run Code Online (Sandbox Code Playgroud)
我的命令类:
@Command(name = "mini-java-util", description = "...",
mixinStandardHelpOptions = true)
public class MiniJavaUtilCommand implements Runnable {
@Inject ConverterService converterService;
@Option(names = {"-v", "--verbose"}, description = "...")
boolean verbose;
public static void main(String[] args) throws Exception {
PicocliRunner.run(MiniJavaUtilCommand.class, args);
}
public void run() {
// business logic here
if (verbose) {
System.out.println("converterService :" + converterService);
}
}
} …Run Code Online (Sandbox Code Playgroud)