【发布时间】:2021-11-15 17:47:26
【问题描述】:
我创建了一个包含三个可能常量的枚举类 Proposition,
public enum Proposition {
TRUE, FALSE, NULL;
}
我想在我使用布尔运算符编写代码时做到这一点
Proposition propA = Proposition.FALSE;
Proposition propB = Proposition.NULL;
Proposition propC = propA && propB;
propC 将按照 Kleene 的逻辑变为 NULL。 https://en.wikipedia.org/wiki/Three-valued_logic
我将如何在 Java 中实现它?我必须使用方法还是可以使用布尔运算符?
【问题讨论】:
-
Java 中不能覆盖运算符,所以不能。您可以使用 Boolean,它确实代表三态,但您的 null 情况不会像您预期的那样工作。
-
意思是我一般不能对自定义类使用运算符,对吧?
-
“我一般不能对自定义类使用运算符”——是的,java 没有运算符重载。相反,您必须在
Proposition类中定义方法,例如Proposition Proposition::and(Proposition other)。 -
对。某些语言允许您为自己的类中的任何运算符定义自定义语义。 In C++,他们使用
<<,这是一个旨在进行位移的运算符,让您更轻松地写入标准输出std::cout << "print me";。它对于矩阵乘法matrix1 * matrix2和其他很多东西很有用。 Java 没有这个特性