Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为任何对象_Java_String_Dynamic_Groovy_Casting - Fatal编程技术网

Java 将字符串转换为任何对象

Java 将字符串转换为任何对象,java,string,dynamic,groovy,casting,Java,String,Dynamic,Groovy,Casting,我想知道如何将字符串动态转换为任何数据类型。 例如,我有: String dataType String value 然后,这些字段将从数据库中填充 dataType = "java.lang.Integer" value = "42" 所以,我想把“42”(字符串)转换成42(int) 我想到了解决办法: 使用 为每个数据类型切换,并使用相应的解析方法。 例如:Integer.parseInt(字符串)或新的BigDecimal(字符串) 使用反射方法进行铸造 有什么想法吗,伙计们 (我不

我想知道如何将字符串动态转换为任何数据类型。 例如,我有:

String dataType
String value
然后,这些字段将从数据库中填充

dataType = "java.lang.Integer"
value = "42"
所以,我想把
“42”(字符串)
转换成
42(int)

我想到了解决办法:

  • 使用

  • 为每个数据类型切换,并使用相应的解析方法。 例如:
    Integer.parseInt(字符串)
    新的BigDecimal(字符串)

  • 使用反射方法进行铸造

  • 有什么想法吗,伙计们

    (我不会使用外部库)


    此外,Groovy解决方案也被接受。

    在Groovy中,您可以使用
    作为
    操作符:

    assert "42" as Integer == 42
    
    assert 42 as String == "42"
    
    assert 42 as Long == 42l
    
    assert "42" as BigDecimal == 42.0
    

    表示您想知道哪一个更合适、更高效?
    Class.cast(Object)
    不进行转换。最简单的解决方案是使用反射来处理尽可能多的情况,但预先设置一个基于开关的非反射转换来加速常见情况。@user2173681-是的,我想知道哪个是efficient@Holger-是的,我想这样做是因为
    cast
    方法无法做到这一点。是的,也许我会考虑通过反射来反映和切换创建对象并不是一件困难的事情(给定一个无参数的构造函数)。困难的工作是将价值放入对象中。有很多种方法:可能有一个构造函数接受一个值。可能有个二传手。可能存在解析工厂方法。有时,您必须首先解析,然后为您创建的或尚未创建的对象提供更专门的对象。没有任何东西能以一种通用的、动态的方式完成这一切。这是我第一次看到这个关键词。我查了一下,它真的很漂亮,比反光的铸件短。