jimbeさん、YT0014さんの「意見」と同じことですが。
Java
1class Hoge {
2 private Integer count;
3 Integer getCount() { return count; }
4 void test() {
5 if( getCount() == null ) { System.out.println("A"); }
6 if( getCount() == 3 ) { System.out.println("B"); }
7 }
8}
コンパイルして、逆コンパイルしてみる。
$ javac Hoge.java
$ javap -v Hoge
Classfile /C:/tmp/Hoge.class
Last modified 2025/01/31; size 627 bytes
SHA-256 checksum bf7788640300f7be99d2b9d4efda6ee2d62df1c2b7726a702b9b82a4daae8d0f
Compiled from "Hoge.java"
...
件のあたりをみてみる。== null
の部分。
0: aload_0
1: invokevirtual #13 // Method getCount:()Ljava/lang/Integer;
4: ifnonnull 15
7: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;
10: ldc #23 // String A
12: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
もう一方。== 3
の部分。Integer#intValue()を実行する。NPE。
15: aload_0
16: invokevirtual #13 // Method getCount:()Ljava/lang/Integer;
19: invokevirtual #31 // Method java/lang/Integer.intValue:()I
22: iconst_3
23: if_icmpne 34
26: getstatic #17 // Field java/lang/System.out:Ljava/io/PrintStream;
29: ldc #37 // String B
31: invokevirtual #25 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。