不同类别的值之间的转换?

时间:2018-11-10 19:37:40

标签: java

说,我从一侧得到的字符串值为“ CHAR”,“ VARCHAR”,“ NUMBER”等,从另一侧得到的是JDBCType.CHAR,JDBCType.VARCHAR,JDBCType.INTEGER。

我可以像这样简单地实现转换:

public static JDBCType convertFromStringToJDBCType(String datatype) {
switch(datatype) {
  case "VARCHAR":
    result = JDBCType.VARCHAR;
    break;
  case "NUMBER":
    result = JDBCType.INTEGER;
    break;
...
}

这种方法的缺点是我必须构建与该函数完全相反的功能才能将值转换回去。

实现这种转换的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

只要您不开始在不同的地方“复制”它,“中央”开关语句就没有问题。一个开关就可以,通常,当“相同”开关代码存在于多个位置时,“麻烦”开始。

如果有的话,您可以考虑将此映射信息放入不同的映射typesByString.put("VARCHAR", JDBCType.VARCHAR)中,依此类推。

如果您想双向使用,则需要调查bidi maps(惊奇)!

答案 1 :(得分:1)

您还可以使用valueOf(String)中的内置Enum方法。有点像

result = JDBCType.valueOf(datatype);

答案 2 :(得分:0)

您可以创建Map<String, JDBCType>并将其用于将 key转换为value value转换为key 。如果您发现键值缓慢,则可以创建另一个相反的Map<JDBCType, String>