【问题标题】:Return generic type after parsing an Integer from a String从字符串解析整数后返回泛型类型
【发布时间】:2020-05-08 18:43:52
【问题描述】:

我正在尝试编写一个从数据库中获取对象的方法。此方法必须能够指定该对象期望的类(例如:get("some.key", Integer.class) 将返回一个整数)。 但是,如果预期的类型是整数,而我们的值是字符串,我希望它将该字符串转换为整数并返回它。 我当前的代码如下所示:

public <T> T get(String key, Class<T> type) {
    Object element = ...;
    if (type == Integer.class && element instanceof String) return Integer.parseInt((String) element);
    return element;
}

但是,我的 IDE 给了我一个错误:当返回 Integer.parseInt((String) element) 时,该方法需要返回类型为 T,但我返回的是一个整数,在这种情况下是 T 类型,但它不接受。

我尝试将其转换为:(T) Integer.parseInt((String) element),但我的 IDE 说这些是不可转换的类型。

我怎样才能使这个方法在解析整数后返回T 类型的有效对象? 任何帮助表示赞赏。

【问题讨论】:

    标签: java casting


    【解决方案1】:

    使用传递给您的Class 实例将结果转换为T

    public <T> T get(String key, Class<T> type) {
        Object element = ...;
        if (type == Integer.class && element instanceof String) element = Integer.parseInt((String) element);
        return type.cast(element);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-14
      • 1970-01-01
      相关资源
      最近更新 更多