当前位置: 首页 > 知识库问答 >
问题:

java.lang.ClassCastException-相同的对象-两个类,为什么?

鲜于高明
2023-03-14

我在android工作室工作,2.1.2。

我在两个活动之间有一个神秘角色转换异常。

在第一个活动中,我有这个ArrayList:

 ArrayList<riparazione> nuovo = notizia.get_Elenco();

我将arraylist(parcellable)插入到bundle中,以便在另一个活动中发送:

     Intent intent = new Intent(prenota_mostra_cellulari.this, prenota_mostra_dettagli.class);

                Bundle spedizione = new Bundle();
                    spedizione.putString("Nome",notizia.get_Marca());
                    spedizione.putString("Foto",notizia.get_Foto());
                    spedizione.putString("Marca",notizia.get_Nome());
                    spedizione.putParcelableArrayList("Riparazioni",nuovo);

                   intent.putExtras(spedizione);
                   intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

在第二个活动中,我将此用于恢复ArrayList

  ArrayList<riparazione> nuovo = new ArrayList<>();

    Intent intent = getIntent();
    if (null != intent) {
        dati_cel = intent.getExtras();
        nuovo = dati_cel.getParcelableArrayList("Riparazioni");

        Log.d("Dati", String.valueOf(dati_cel.size()));
        Log.d("Dati arraylist", String.valueOf(dati_cel.size()));
        riparazione dads = nuovo.get(9);
    }

现在按照利帕拉嗪dads=nuovo.get(9);

我什么都试过了,带和不带Bundle的发送,类输出结束输出都是一样的,为什么要这样铸造呢?那我该怎么解决??

谢谢你的帮助

共有1个答案

伯晨
2023-03-14

错误不在您发布的代码中。请记住,列表(通常和泛型)会受到类型擦除的影响。这意味着即使您将nuovo声明为arraylist ,Java也不会在运行时检查您是否将riparazione添加到列表中,或者当您传递时列表是否实际包含riparazione

您在列表中插入了orario。错误发生在以下位置:

riparazione dads = nuovo.get(9);

我们不知道nuovo列表最初是如何构造的,但错误显然不在您发布的代码中。

 类似资料:
  • 问题内容: 似乎以下代码应返回true,但返回false。 这有什么意义? 问题答案: 常规()和严格()相等之间的唯一区别是,严格相等运算符禁用类型转换。由于已经在比较两个相同类型的变量,因此使用的相等运算符的类型无关紧要。 不管您使用常规相等还是严格相等,对象比较仅 在您比较相同的精确对象时得出 。 也就是说,给定,,,但。 两个不同的对象(即使它们都具有零或相同的精确属性)也永远不会相等地进

  • 我创建了的两个实例,如下所示。一个是从创建的,另一个是相同的,但在开头加上了一些附加的数字。使用方法比较它们时,它返回: 我认为添加的数字被丢弃了,并且两者给出了相同的UUID字符串值。为什么会这样?

  • 我有一个类,只有两个字段:id、name 然后,在类中,我尝试使用两种不同的方法初始化User对象: 然后我就可以得到输出 有趣的是为什么u类是Main的内部类类型?但实际上我仍然可以使用和方法。

  • 假设我有两个列表,现在listOld包含旧员工信息,listNew包含新员工信息 我如何比较这两个列表并返回新列表,其中包含,添加的新员工列表,包含,删除的员工列表,包含上次更新已更改的员工的新列表? 我只能想到迭代列表和比较,可能最终几乎是O(n2)时间,这可以由任何util类更有效地完成吗?

  • 我正在使用Mockito编写单元测试,但我在模仿注入的类时遇到了问题。问题是两个注入的类是相同的类型,仅通过它们的注释来区分。如果我试图简单地模拟,那么在我的测试中,该模拟不会被注入,并且该对象为。我如何模拟这些对象?

  • 问题内容: 在以下代码中,我不明白为什么当它属于两个不同的对象时具有相同的ID? 问题答案: 我认为这是正在发生的事情: 取消引用时,将在内存中创建其副本。该存储位置由以下位置返回 由于没有引用到刚刚创建的方法的副本,因此GC将其回收,并且该内存地址再次可用 取消引用时,将在相同的内存地址(可用)中创建它的副本,您可以再次使用该地址。 第二个副本是GCd 如果您要运行一堆其他代码并再次检查实例方法