在阅读有效的 java 第 5 章第 27 条时
它谈论通用单例模式:
现在假设您要提供一个标识函数。每次需要时都创建一个新的会很浪费,因为它是无状态的。如果泛型被具体化,则每种类型都需要一个标识函数,但由于它们已被删除,因此您只需要一个泛型单例。这是它的外观:
public class GenericSingleton<T> {
private static UnaryFunction<Object> IDENTIFY_FUNCTION = new UnaryFunction<Object>() {
@Override
public Object apply(Object args) {
return args;
}
};
@SuppressWarnings("unchecked")
public static <T> UnaryFunction<T> identityFunction() {
return (UnaryFunction<T>) IDENTITY_FUNCTION;
}
public static void main(String[] args) {
String[] strings = {"jute", "hemp", "nylon"};
UnaryFunction<String> sameString = identityFunction();
for (String s : strings) {
System.out.println(sameString.apply(s));
}
Number[] numbers = {1, 2.0, 3L};
UnaryFunction<Number> sameNumber = identityFunction();
for (Number n : numbers) {
System.out.println(sameNumber.apply(n));
}
}
}
我无法理解apply方法实际上做了什么!
这就像获取一个对象并返回它自己。为什么?一些无用的样本?
请有人告诉我用例吗?
幕布斯6054654
相关分类