java将文本转换为对象

java将文本转换为对象,java,Java,我有一个应用程序,其中属性文件包含以下格式的数据 name=abc#$#String age=23#$#Integer 对值进行强制转换时,将其强制转换为#$#之后的值。是否可以在不使用开关或if-then-else语句的情况下执行此操作 我想做的是有一种方法将字符串或整数转换为对象,并且能够在不使用if-then-else块的情况下强制转换值。这种东西 String[] tmp = props.getProperty("name").split("#$#"); String name = (

我有一个应用程序,其中属性文件包含以下格式的数据

name=abc#$#String
age=23#$#Integer
对值进行强制转换时,将其强制转换为#$#之后的值。是否可以在不使用开关或if-then-else语句的情况下执行此操作

我想做的是有一种方法将字符串或整数转换为对象,并且能够在不使用if-then-else块的情况下强制转换值。这种东西

String[] tmp = props.getProperty("name").split("#$#");
String name = (tmp[1])tmp[0];

我不确定我是否理解你的问题。 首先,我认为使用分割法会使事情变得更复杂。因为您知道您的值包含#$#,所以可以用空字符串替换它们。 第二,由于您知道(我假设)在属性文件中有一个名为name的属性,类型为String,属性年龄为整数,因此可以执行以下操作(如果需要,则不进行其他检查)


这就是您要找的吗?

首先,您不能将字符串对象强制转换为整数对象;String不是Integer的子类。但是,您可以将字符串文字转换为对象并对其强制转换:

Class.forName("some.package.name.SomeClass").cast(aSubclass);
然而,上述规定仍然适用。您将无法将字符串“23”转换为整数

看起来你有点想太多了。这可以像if-else语句一样简单,也可以像Factory方法一样简单,它最终会做同样的事情


另外,我假设您事先知道对象类型,因为您首先不会将名称映射到整数。在这种情况下,你不妨照alexandros说的做。

为什么条目不是简单的name=abc和age=23?你的代码片段对我来说不太有意义:如果你知道足够多的知识来写
字符串name
,那么你一定已经知道它将是一个
字符串,所以不需要
(tmp[1])
符号。不可以?不能使用变量作为强制转换说明符。我只是让示例变得简单而已。代码不知道属性文件的内容。它从属性文件接收insert查询以及列和值。代码遍历属性列表并将其强制转换,然后将其插入数据库。我可以使用if(“String”)然后(String)name else if(“Integer”)然后…我想知道我是否可以避免它,并以某种方式使用反射或其他方法来投射值对不起,仍然不明白。代码遍历属性列表,然后呢?迭代属性文件时,您有键和值。如何确定值是字符串还是整数?我想我不太擅长描述我的问题,而是Class.forName(“some.package.name.SomeClass”).cast(aSubclass);应该帮我解决我的问题。谢谢
Class.forName("some.package.name.SomeClass").cast(aSubclass);