XStream 更改通用别名约定

发布于 2024-10-09 15:24:06 字数 105 浏览 7 评论 0原文

现在XStream使用class.getName()作为别名,但我想使用class.getSimpleName()。是否可以轻松配置它,或者我是否必须手动配置所有类才能使用 simpleName?

Now XStream uses class.getName() for aliases, but I would like to use class.getSimpleName(). Is it possible to easily config this, or do I have to manually configure all classes to use simpleName?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟酒忠诚 2024-10-16 15:24:07

问题是,您的映射应该是双向的,因此您可以根据简单的名称找到该类。既然这不是小事,你应该自己做点什么。我基本上可以看到两种方法可以做到这一点。

1. 注册别名

由于您已经知道您将使用哪些类(因为如果您不知道,您将无法找到带有简单名称的类),因此您可以为所有类注册别名类似

xtream.register("Simple", net.difficult.package.name.Simple.class);

2. 创建自定义映射器

如果您出于某种原因不想注册别名,您可以将映射器包装在您自己的映射器中(例如,请参阅 AbstractXmlFriendlyMapper 以此为基础),但是,您仍然需要某种方法来找出哪个类属于哪个简称。

The thing is, that your mapping should work both ways, so you can find the class based on the simple name. Since this is not trivial, you should do something yourself. I can see basically two ways to do this.

1. Register aliases

Since you already know what classes you'll be using (since, if you don't, you wouldn't be able to find the class that goes with a simple name), you could register aliases for all classes with something like

xtream.register("Simple", net.difficult.package.name.Simple.class);

2. Create a custom mapper

If you don't feel like registering the aliases for some reason, you can wrap the mapper in a mapper of your own (see for instance the AbstractXmlFriendlyMapper for a basis of this), but still, you will need some way to find out which class belongs to which short name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文