像Boolean这样的自定义Java类型?

我想创建一个可以与Boolean相同的方式使用的类型。 具体来说,我希望测试结构能够工作:

 if (mytype) { System.out.println("true"); } 

显然,语言将此定义为5.1.7节中的特例。 测试应用程序显示它:

 public class TypeBoolTest { public static void main(String args[]) { Boolean bool = true; if (bool) { System.out.println("bool = true"); } else { System.out.println("bool = false"); } } } /** Compiled from "TypeBoolTest.java" public class TypeBoolTest { public TypeBoolTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."":()V 4: return public static void main(java.lang.String[]); Code: 0: iconst_1 1: invokestatic #2 // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean; 4: astore_1 5: aload_1 6: invokevirtual #3 // Method java/lang/Boolean.booleanValue:()Z 9: ifeq 23 12: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream; 15: ldc #5 // String bool = true 17: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 20: goto 31 23: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream; 26: ldc #7 // String bool = false 28: invokevirtual #6 // Method java/io/PrintStream.println:(Ljava/lang/String;)V 31: return } **/ 

扩展Boolean不起作用,因为该类是最终的。

所以我的问题是:是否有可能定义一个自定义类型,以便Java将识别它遵循boolean装箱和拆箱规则?

不,不可能定义自己的类型,可以由Java自动(un)装箱。

自动(联合)装箱仅适用于一组特定的标准类型(包装器类型: BooleanInteger ,长度等),并且无法使用用户定义的类型对其进行扩展。

可以自动装箱和取消装箱的类型列表在Java语言规范第5.1.7和5.1.8节中定义。