在jackson中使用for的@JsonTypeInfo和@JsonSubTypes注释是什么?
public class Lion extends Animal {
private String name;
@JsonCreator
public Lion(@JsonProperty("name") String name) {
this.name = name;
}
public String getName() {
return name;
}
public String getSound() {
return "Roar";
}
public String getType() {
return "carnivorous";
}
public boolean isEndangered() {
return true;
}
@Override
public String toString() {
return "Lion [name=" + name + ", getName()=" + getName() + ", getSound()=" + getSound() + ", getType()=" + getType() + ", isEndangered()="
+ isEndangered() + "]"; …Run Code Online (Sandbox Code Playgroud) 我在Java代码中使用了很多防御性空检查.虽然他们很好地服务于他们的目的(大部分时间),但他们的代码与"丑陋"的代码有很大关系.
将这些空检查始终放入是否真的有意义?例如:
if(object == null){
log.error("...")
throw new SomeRuntimeException("");
} else{
object.someMethod();
}
Run Code Online (Sandbox Code Playgroud)
实际上,上面的代码相当于声明 object.someMethod();
如果object的值为null,则在两种情况下都会抛出异常(后面的NullpointerException).
掩码NullpointerExcetion(NPE)并抛出一些自定义RunTimeException(如上面的代码片段)真的有意义吗?我观察到一些开发人员将NPE视为邪恶,经常试图找出掩盖它的防御方法并用一些自定义异常掩盖它.这种掩蔽真的需要吗?
题