考虑UnaryFunction
接口定义在有效的Java仿制药章节。
public interface UnaryFunction<T> {
T apply(T arg);
}
以及以下用于返回的代码UnaryFunction
// 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;
}
为什么演员阵容是IDENTITY_FUNCTION
to (UnaryFunction<T>)
safe ?
这本书是关于我要问的问题的,但我无法遵循这里的逻辑。我们在哪里调用apply
哪个函数执行恒等运算?我很困惑,因为该函数返回传递给它的相同对象而不修改任何内容。
IDENTITY FUNCTION 的演员表(UnaryFunction<T>)
生成一个
未经检查的演员警告,如UnaryFunction<Object>
不是一个UnaryFunction<T>
对于每一个T
。但恒等函数很特殊:它
返回未修改的参数,因此我们知道使用它是类型安全的
它作为一个UnaryFunction<T>
无论其价值如何T
。因此,我们可以
自信地抑制由生成的未经检查的强制转换警告
这个演员阵容。完成此操作后,代码编译时不会出现错误或
警告。
仅当恒等函数返回exact首先传递给它的对象。因此,在运行时,通用参数没有特殊化T
这可能会违反演员表。
也就是说,您正在将一个对象转换为它自己的类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)