假设我有一个用Java实现的参数化树,如下所示:
public class Tree<E> {
private static class Node {
E element;
List<Node> children.
}
Node root;
//... You get the idea.
}
Run Code Online (Sandbox Code Playgroud)
这里的想法是上面的实现仅涉及树的拓扑,但是不知道将通过实例化存储在树中的元素的任何信息.
现在,说我希望我的树元素是地理位置.它们在树木中组织的原因是因为大陆包含国家,国家包含州或省,等等.为简单起见,地理位置具有名称和类型:
public class GeoElement { String name; String type; }
Run Code Online (Sandbox Code Playgroud)
最后,地理层次结构如下所示:
public class Geography extends Tree<GeoElement> {}
Run Code Online (Sandbox Code Playgroud)
现在到杰克逊序列化.假设Jackson序列化程序可以看到字段,则此实现的直接序列化将如下所示:
{
"root": {
"element": {
"name":"Latin America",
"type":"Continent"
}
"children": [
{
"element": {
"name":"Brazil",
"type":"Country"
},
"children": [
// ... A list of states in Brazil
]
},
{
"element": {
"name":"Argentina",
"type":"Country"
},
"children": [
// …Run Code Online (Sandbox Code Playgroud) 我正在模拟一个相当复杂的对象层次结构,在我处理它的过程中,可能涉及到大量的方法。如果我错过了一个非空的方法并保持不变,默认情况下 Mockito 会使其返回 null,这会快速触发 NPE,我很容易找到它。然而,如果我错过了一个 void 方法,默认行为是什么都不做,这经常导致下游的失败并且更难调试。我想更改此默认值,例如抛出自定义异常,但似乎没有找到方法。提前致谢!
我需要找到一种方法从JVM获取一个(有点)随机字符串或数字,我不必存储.但是我会在JVM的整个生命周期中多次需要它,因此对此方法的后续调用必须返回相同的值.此外,在重新启动JVM之后,相同的代码必须产生不同但仍然稳定的值.随机性的质量并不重要,只要它足够难以猜测.