不向下转型的使用方法

Use method without downcasting

我有一个方法可以转换不同的 classes

protected Object convert(String body,Util util) {
        Reader reader = new StringReader(body);
        ObjectMapper objectMapper = new ObjectMapper();
        if(util instanceof MyUtil) {
            // returning a myClass object
            return objectMapper.readValue(reader, myClass.class);
        }
        throw new RuntimeError("Class to converter not exist");
    }

然后我使用这个方法并转换为 MyClass

MyClass myclass = (MyClass) converter.convert(util);

如何只查找一个 class

protected MyClass convert(String body,Util util) {
        Reader reader = new StringReader(body);
        ObjectMapper objectMapper = new ObjectMapper();
        return objectMapper.readValue(reader, MyClass.class);
    }
MyClass myclass = converter.convert(util);

是否可以重构方法使其更灵活地适应不同的 return classes 并避免转换?

您可以更改签名以匹配 readValue 正在做的事情。

protected <T> T convert(String body, Class<T> clazz) throws IOException {
    Reader reader = new StringReader(body);
    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.readValue(reader, clazz);
}
MyClass myclass = app.convert(json, MyClass.class);

如果输入与预期不匹配,这当然仍然会导致各种异常 class。