Ada*_*dam 1 java effective-java
我刚刚阅读了Bloch的Effective Java,有一节讨论了泛型章节中的"身份功能".
public interface UnaryFunction<T> {
T apply(T arg);
}
// Generic singleton factory pattern
private static UnaryFunction<Object> IDENTITY_FUNCTION = new UnaryFunction<Object>() {
public Object apply(Object arg) { return arg; }
};
// IDENTITY_FUNCTION is stateless and its type parameter is
// unbounded so it's safe to share one instance across all types.
@SuppressWarnings("unchecked")
public static <T> UnaryFunction<T> identityFunction() {
return (UnaryFunction<T>) IDENTITY_FUNCTION;
}
Run Code Online (Sandbox Code Playgroud)
我已经读过"为什么禁止这种未经检查的警告是否安全?" 并且答案解释了未经检查的警告问题,但当身份功能似乎与身份无关时,让我对"身份功能"的概念完全不满意.
布洛赫只是假设我知道它是什么,但在他用来说明它的实现中,它与身份或身份无关.
我在维基百科上查了一下:身份函数@维基百科,但纯粹的理论描述并没有告诉我它与身份有什么关系.
我在google上搜索过,有些人将这些.equals()和.hashCode()方法称为身份函数,这有点意义,但当然它们的实现与Bloch的方法完全不同,后者返回输入参数不变.这与身份有什么关系?
其他人谈到数据库函数作为身份函数,在每次调用时给出一个新的ID,这也更有意义,但显然范围非常有限.
一种身份的功能,在你的问题的代码的情况下,仅仅是返回传递给它的相同参数的函数:
在数学中,您可以将其表示为:
f(x) = x
Run Code Online (Sandbox Code Playgroud)