假设我有一个pojo:
import org.codehaus.jackson.map.*;
public class MyPojo {
int id;
public int getId()
{ return this.id; }
public void setId(int id)
{ this.id = id; }
public static void main(String[] args) throws Exception {
MyPojo mp = new MyPojo();
mp.setId(4);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationConfig.Feature.WRAP_ROOT_VALUE, true);
System.out.println(mapper.getSerializationConfig().isEnabled(SerializationConfig.Feature.WRAP_ROOT_VALUE));
System.out.println(mapper.writeValueAsString(mp));
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用Jackson ObjectMapper进行序列化时,我得到了
true
{"id":4}
Run Code Online (Sandbox Code Playgroud)
但我想要
true
{"MyPojo":{"id":4}}
Run Code Online (Sandbox Code Playgroud)
我一直在搜索,Jacksons的文档真的没有组织,而且大部分已经过时了.
正如许多人已经注意到并遇到的那样,HashMap.put当同时使用时可以进入无限执行循环(参见GRIZZLY-1207,JGRP-525,可能是HHH-6414,以及这个SO 答案).
HashMap清楚地记录为不是线程安全的.显然,正确的解决方法是使用一个线程安全的实现Map,ConncurrentHashMap尤其如此.我对导致无限循环的并发时序更加好奇.我最近使用Java 7 JRE遇到了这个循环,并想了解确切的原因.例如,这是由同时多次看跌引起的吗?
在HashMap.put中查看显示HashMap.Entry包含指向下一个节点的链接(在存储桶中?).我假设这些链接正在腐蚀以包含循环引用,这导致无限循环.但是,我仍然不明白腐败是如何发生的.
RESTEasy为模拟服务器请求提供了服务器端模拟框架.是否有相应的单元测试客户端框架?
InMemoryClientExecutor是否用于此目的?我很难找到文档以及如何使用这个类的示例.
在查看覆盖的不同选项时hashCode(),我被引导到Objects.hashCode(Object[])Google的guava-libraries(javadoc)中.javadoc表示它委托给Arrays.hashCode(Object[]).在许多不同的对象类型中使用此方法是否安全?这不容易发生哈希冲突,或者这不仅仅是因为容器通常只包含一种类型的对象?
举个简单的例子,考虑以下类,
public class Student {
private final String name;
public Student(String name) {
this.name = name;
}
@Override
public int hashCode() {
return Objects.hashCode(name);
}
}
public class Teacher {
private final String name;
public Teacher(String name) {
this.name = name;
}
@Override
public int hashCode() {
return Objects.hashCode(name);
}
}
public class HashCodeDriver {
public static void main(String[] args) {
final String name = "moe";
Student s = new Student(name); …Run Code Online (Sandbox Code Playgroud) java ×4
concurrency ×1
guava ×1
hashcode ×1
hashmap ×1
jackson ×1
jax-rs ×1
json ×1
resteasy ×1
unit-testing ×1