为什么IntelliJ告诉我们从Object到String的转换是多余的?
public class Utils {
private static Map<Class, Function<Object, ?>> functions = new HashMap<>();
static {
functions.put(String.class, v -> (String) v);
functions.put(Foo.class, v -> {
Foo foo = new Foo();
foo.setA((String) ((Map<String, Object>) v).get("A"));
foo.setB((String) ((Map<String, Object>) v).get("B"));
return foo;
});
}
}
1条答案
按热度按时间s3fp2yjn1#
Map的值类型是
Function<Object, ?>
-也就是说,函数的返回类型是什么并不重要。因为强制转换并没有真正“做”任何事情,只是让编译器知道对象的类型,因为你不需要它是一个字符串来编译,你可以删除它。
话虽如此,也没有理由“重新实现”函数
v -> v
,您可以使用Function.identity()
代替。