【问题标题】:java.lang.Long cannot be cast to java.lang.Double what am I missing? [duplicate]java.lang.Long 不能转换为 java.lang.Double 我错过了什么? [复制]
【发布时间】:2021-07-09 15:41:27
【问题描述】:

我正在尝试从 Firestore 中提取会话数据(数字),但出现 java.lang.Long cannot be cast to java.lang.Double 错误。

我已经阅读了关于在 long 和 double 之间转换的类似文章,尽管还没有实现对我有用,也许我没有正确实现它们。谁能告诉我哪里出错了。 我已经尝试过了,但也导致了错误:

Long x = (Long) session.get("rep_set1");
s.setRepsSet1((double) x);

这是完整的方法:

public class BenchSessionModel extends  Session {
    public BenchSessionModel() {
        type = ExerciseType.BENCH;
    }

    public static BenchSessionModel fromJson(Map<String, Object> session) {
        BenchSessionModel s = new BenchSessionModel();

        s.setRepsSet1((double) session.get("rep_set1"));
        s.setRepsSet2((double) session.get("rep_set2"));
        s.setRepsSet3((double) session.get("rep_set3"));
        s.setGoalReps((double) session.get("goal_reps"));
        s.setGoalWeight((double) session.get("goal_weight"));
        s.setRpe((double) session.get("rpe"));
        s.setWeight((double) session.get("weight"));
        s.setStallCount((int) session.get("stall_count"));

        String exp= (String) session.get("level");
        if(exp.equalsIgnoreCase("beginner")){
            s.setXpLevel("BEGINNER");
        }else{
            s.setXpLevel("ADVANCED");
        }
        s.setType(ExerciseType.BENCH);
        return s;
    }
}

【问题讨论】:

  • Long 不是 Double,Double 不是 Long。就像 ArrayList 不是字符串一样。我们人类知道它们在概念上都是数字,所以它们看起来应该是可转换的。编译器没有。你可以打电话给someLong.doubleValue(),它会给你一个原始的double,如果需要的话会自动装箱成一个Double。
  • 鸽子的蛋不是鸡的蛋,无论你多么频繁地尖叫“做鸡的蛋”。
  • 您可以将long 转换为double,但您不能将Long 转换为double
  • @GhostCat 我如何在不考虑邻居的情况下通过实验验证这个假设?
  • 好的,这些值作为数字存储在 Firestore 中,当我拉取它们时,我需要它们以双精度的形式出现,我该怎么做?他们似乎从 Firestore 来了很长时间

标签: java google-cloud-firestore


【解决方案1】:
Long x = (Long) session.get("rep_set1");
if(x != null){
    s.setRepsSet1(x. doubleValue());
}

Long 对象有一个 doubleValue() 方法,你可以使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2023-04-03
    • 2016-07-26
    • 2013-08-24
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多