k13*_*13i 4 java json object primitive-types jackson
我正在使用Jackson JSON解析器。我有应该通过REST服务返回的简单数据传输对象。
public class PersonDto {
private String name;
private Integer age; // int?
public PersonDto(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
public Integer getAge() {
return this.age;
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我应该更喜欢包装类而不是原始类型作为字段吗?除了包装器可以为空之外,哪些方法具有更多优势?
包装类: java.lang.Integer
优点:
null值,因此给用户留下空白/未指定字段的机会当值在 -128 到 127 之间时速度很快,因为它使用其内部缓存而不是创建新对象
Integer::valueOf用于解析String的
缺点:
不可变:如果您必须重置该值(例如:因为它超出了某个范围),您将不得不重新创建一个全新的Integer实例。
计算性能较慢
java.lang.Integer是对实例的引用。每次计算都会重新创建一个全新的对象
原始类型: int
优点:
可变的(只要提供了 non-final和 a setter):很容易允许:this.age = age > MAX_AGE ? blabla : age;
原始类型计算速度更快
Integer::parseInt用于解析String的
缺点:
似乎唯一的优点java.lang.Integer是blank/null值。
此外,在需要包装器的情况下,例如:
List<Integer> myList;
Run Code Online (Sandbox Code Playgroud)
您可以直接添加一个未装箱的值myList.add(2);,编译器将其解释为myList.add(Integer.valueOf(2));
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |