Java 从属性文件解析映射
这是我上一个问题(发现)的后续问题。到目前为止,我的属性文件由简单的键值对组成,如int和string。我现在想用它来放置一些更高级的结构,更具体地说,我需要一个映射,其中a是我定义的类,例如:Java 从属性文件解析映射,java,properties,maps,Java,Properties,Maps,这是我上一个问题(发现)的后续问题。到目前为止,我的属性文件由简单的键值对组成,如int和string。我现在想用它来放置一些更高级的结构,更具体地说,我需要一个映射,其中a是我定义的类,例如: foo=bar,5;baz,10 这可能吗?如果是这样,我应该如何分别格式化文件和解析映射 有没有更好的方法来解决这个问题?您是否考虑过使用split()和trim() 请参阅下文: ResourceBundle rb=ResourceBundle.getBundle(Prop.class.getNa
foo=bar,5;baz,10
这可能吗?如果是这样,我应该如何分别格式化文件和解析映射
有没有更好的方法来解决这个问题?您是否考虑过使用split()和trim() 请参阅下文: ResourceBundle rb=ResourceBundle.getBundle(Prop.class.getName())
对于您正在尝试做的事情和您的长期计划来说,这可能有点过头了,但是我发现Spring框架很容易处理这种事情 这里有一个参考说明,说明如何使用 还有一个 下面是Spring配置文件中的映射
<beans>
<bean id="foo" class="x.y.Foo">
<property name="accounts">
<map>
<entry key="one" value="9.99"/>
<entry key="two" value="2.75"/>
<entry key="six" value="3.99"/>
</map>
</property>
</bean>
</beans>
使用XML而不是使用您自己的语言的属性文件来表示更复杂的结构,这样会减少工作量,减少错误,更易于维护
您可以使用诸如JIBX和XMLBean之类的绑定技术使事情变得更简单。在本例中,最简单的方法是为它创建一个单独的属性文件。然后它只有名称/值对,比如 巴=5 baz=10 如果这是一张大桌子,我不想把它和更一般的东西混在一起。如果是一张有3对的桌子,那就不同了
属性文件确实是复杂数据结构的最佳解决方案。它们用于名称/值对。如果你超越了这一点,当然,你可以通过发明一种语法来让它工作,但是为什么要麻烦呢?如果它是一种超复杂的语法,那么XML就是一种可能。或者它属于关系数据库。或CSV文件。选择符合要求的工具,不要先决定工具,然后再尝试使其适合。如果字符串需要包含逗号或分号,该怎么办?我肯定这不会成为问题。而且,它总是可以与其他字符交换。实际上,我最终使用了单独属性文件的组合以及Koekiebox的解决方案。我通过使用读取字符串进行解析并映射来创建类的实例。我对这个解决方案相当满意,因为到目前为止它工作得很好,更不用说它的可读性了。
<beans>
<bean id="foo" class="x.y.Foo">
<property name="accounts">
<map>
<entry key="one" value="9.99"/>
<entry key="two" value="2.75"/>
<entry key="six" value="3.99"/>
</map>
</property>
</bean>
</beans>