1

我想在这个返回列表中获取每个对象的名称,但输出是一个 Object[] 数组,这在我的 JComboBox 控件中显示entities.Categoria[id=1]。

我不明白这一点。请帮我!这是我的代码:

public List<Categoria> consultarCategorias() {
    try {            
        TypedQuery<Categoria> q = 
                em.createQuery("select c from Categoria c", Categoria.class);
            List<Categoria> results = q.getResultList();            
            return results;
    } catch (Exception e) {
        return null;
    }
}

注意:我用这个

for (Categoria c : results) {
   System.out.println(c.getName());
}    

并且不起作用,这表明结果无法转换为类别

这是填充我的 JComboBox 的代码:

public void fillCmbCategorias() {
   cmbCategoria.removeAllItems();
   try {
      Object[] listaCategorias = crud.consultarCategorias().toArray();
      DefaultComboBoxModel dcb = new DefaultComboBoxModel(listaCategorias);
      cmbCategoria.setModel(dcb);
   } catch (Exception e) {
      JOptionPane.showMessageDialog(null
              ,"No se pudo cargar la lista de categorias. " + e.getMessage());
   }
}
4

2 回答 2

0

你可以尝试像这样铸造:

List<Categoria> results = (List<Categoria>)q.getResultList();  `
于 2017-10-26T06:58:49.880 回答
0

唯一的原因是我可以想象您已将 声明result为一些超类型列表,例如List<?>or List<Object>

假设您可以评估它的返回值consultarCategorias()

当然,您不应该这样做 - 您应该更正列表泛型类型 - 但这可能会起作用:

for (Object c : results) {
   System.out.println(((Categoria)c).getName());
}

更新(添加问题代码后):

你的问题似乎是这样的:

Object[] listaCategorias = crud.consultarCategorias().toArray();

正如我所怀疑的那样。

尝试

Categoria[] listaCategorias =
   crud.consultarCategorias().toArray(new Categoria[]{});
// toArray() needs some array instance to determine the type

关于Lists 和转换为Arrays 在这里查看更多将列表转换为 Java 中的数组

于 2017-10-26T07:04:53.840 回答