我正在寻找 Java 中分类终端对象的规范表示 (1);只能取一个值的对象。
我知道 Void
可用。但是,这更适合作为初始对象 (0),因为它无法实例化。我知道我可以返回一个 null
Void
对象。从这个意义上说,每个 Java 对象都是+1。正是出于这个原因,我想编写 null
免费代码。此外,返回 null
对于我的特定用例来说不是一个可行的解决方案。
最佳答案
让我们至少简单地重申一下定义, 并将接口(interface)与实现分开。一、界面:
import java.util.function.Function;
interface TerminalObj<X> {
<Y> Function<Y, X> uniqueTerminalMorphism();
}
现在,毫不奇怪,一个带有单个元素作为终端对象的枚举:
import java.util.function.Function;
enum Unit {
UNIT;
public static TerminalObj<Unit> terminalObj() {
return new TerminalObj<Unit>() {
public <X> Function<X, Unit> uniqueTerminalMorphism() {
return x -> UNIT;
}
};
}
}
一个非常无聊的演示:
import java.util.function.Function;
class TerminalObjMain {
public static void main(String[] args) {
TerminalObj<Unit> universalProperty = Unit.terminalObj();
Function<String, Unit> boringFunction = universalProperty.<String>uniqueTerminalMorphism();
System.out.println(boringFunction.apply("Hello, world..."));
// prints "UNIT", who would have thought that?
}
}
不要太努力地向任何方向扩展它:Java 甚至没有对...
关于java - Java 的分类终端对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48753583/