Я хотел бы создать тип, который можно использовать так же, как Boolean
. В частности, я хотел бы тест конструкции для работы:Пользовательский тип Java, который действует как Boolean?
if (mytype) {
System.out.println("true");
}
Очевидно, что язык определяет это как частный случай в section 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."<init>":()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
?
Почему метод внутри класса не возвращает логическое значение? –
Лучший вопрос: зачем вам нужен другой тип, который действует как 'Boolean'. Что такое 'Boolean'? –
@kocko это просто идея для объекта результатов веб-сервиса в проекте, над которым я работаю. Это просто «можно ли пропустить« myobj.getSuccess() »? (или аналогичной) вещи. –