Intellij Idea 转换为字符串是多余的

km0tfn4u  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(123)

为什么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;
        });
    }
}

s3fp2yjn

s3fp2yjn1#

Map的值类型是Function<Object, ?>-也就是说,函数的返回类型是什么并不重要。
因为强制转换并没有真正“做”任何事情,只是让编译器知道对象的类型,因为你不需要它是一个字符串来编译,你可以删除它。
话虽如此,也没有理由“重新实现”函数v -> v,您可以使用Function.identity()代替。

相关问题