不向下转型的使用方法
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。
我有一个方法可以转换不同的 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。