scala之我如何获取对象的类型并将其传递给 Scala 中的 asInstanceOf

cyq1162 阅读:15 2024-09-07 23:24:14 评论:0

我有一个 Scala 类,它从 JOSN 模板文件中读取格式化信息,并从另一个文件中读取数据。目标是格式化为模板文件指定的 JSON 对象。我正在使用布局,但现在我想将输出类型设置为模板中的类型(即,如果我在模板中有一个字段值作为字符串,它在输出中应该是一个字符串,即使如果它是原始数据中的整数)。

基本上,我正在寻找一种快速简便的方法来执行以下操作:

output = dataValue.asInstanceOf[templateValue.getClass] 

该行给我一个错误,类型 getClass 不是 Any 的成员。但是我一直没能找到在运行时给我一个变量类型的任何其他成员或方法。这可能吗?如果可能,如何实现?

澄清

我应该补充一点,在我的代码中,我知道我正在处理的只是一个键/值对。我想要的是值的类型。

具体来说,给定下面的 JSON 模板,我希望在输出时将名称转换为字符串,将年龄转换为整数,将薪水转换为小数,而不管它在原始数据文件中的显示方式如何 (它可以是所有字符串,年龄和薪水都可以是整数,等等)。我所希望的是一个简单的转换,不需要我进行模式匹配来专门处理每种数据类型。

示例模板:

people: [{   
    name: "value",   
    age: 0,   
    salary: 0.00   
}] 

请您参考如下方法:

类型参数必须在编译时已知(类型符号),而templateValue.getClass只是一个普通值(Class类型),所以不能使用作为类型参数。 该怎么做 - 这取决于你的目标,我还不清楚......但它可能看起来像

output = someMethod(dataValue, templateValue.getClass),

在该方法中,您可以根据 Class 类型的第二个参数进行不同的计算。


标签:Scala
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号