snakeYaml多次引用对象的同一个实例

时间:2012-08-28 16:39:02

标签: java yaml snakeyaml

在列表中,我想多次引用同一个实例对象:

- text: Here is an object with some data that will allow an image to be generated
  image: &FirstIm
      imageType: ABC
      otherTypE: CB
- text: Later on, lets show you the same image again!
  image: *FirstIm

我正在做的是使用提供的属性生成图像并在图像对象中缓存它。由于具体的实现,我无法再次生成图像,所以我想回顾一下图像对象的特定实例。

不幸的是,snakeYAML将上述视为“哦,所以你想要另一个对象,但具有与FirstIm相同的属性”,所以当我检查第二个图像对象缓存时,它没有任何内容。我需要的行为是“你再次想要FirstIm,好吧,生病了”。

有没有办法在不使用图像对象中的某种字符串来引用某些更高级别的缓存的情况下实现这一点?

希望这是有道理的......

1 个答案:

答案 0 :(得分:1)

我认为您的代码中存在一些问题,或者我仍然不理解这个问题,因为您的问题中的yaml通过了测试就好了。

无法将代码放入评论中。所以就是这样。

import java.util.List
import java.util.Map
...
Yaml yaml = new Yaml();
List load = yaml.loadAs("- text: Here is an object with some data that will allow an image to be generated\n  image: &FirstIm\n    imageType: ABC\n    otherTypE: CB\n- text: Later on, lets show you the same image again!\n  image: *FirstIm", List.class);
assertSame(((Map)load.get(0)).get("image"), ((Map)load.get(1)).get("image"));