【发布时间】:2020-05-13 16:09:48
【问题描述】:
给定一个表示值的字符串数组和另一个表示原始类型的字符串,我需要将值字符串解析为给定原始类型的数组,例如"double" 和 ["1", "2", "3"] 将变为 [1.0, 2.0, 3.0]。
想到的第一个解决方案如下所示:
String format = "int16";
String[] values = {"1", "2", "3"};
switch (format)
{
case "int16":
short[] short_values = new short[values.length];
for (int i = 0; i < values.length; i++) short_values[i] = Short.parseShort(values[i]);
foo(short_values);
break;
}
虽然这行得通,但我不禁觉得有一种更优雅的方法可以做到这一点。 Java中是否有某种方法可以存储对静态方法的引用和对原始类型的引用,以便您可以这样:
Functor parser;
Type type;
switch (format)
{
case "int16":
parser = Short.parseShort;
type = short;
break;
}
List<type> value_list = new ArrayList<>();
for (String value : values) value_list.add(parser(value));
foo(value_list.toArray(new type[0]);
假设这是不可能的,有没有其他方法可以改进第一个解决方案?
谢谢
【问题讨论】:
标签: java