【问题标题】:String[] to Object[] Java字符串 [] 到对象 [] Java
【发布时间】:2014-01-23 22:33:40
【问题描述】:

是否有将String[] 转换为Object[] 的解决方法?使用它时我不断收到错误消息。 我正在尝试插入jTable,它给了我一个错误,说我正在尝试将类型String 转换为类型Object...

我在这里获取日期并将其插入到对象月份中。

    // Create calendar and format to first sunday of the year.
    Calendar c;
    Object[] months = new String[52];
    c = Calendar.getInstance();
    c.set(Calendar.MONTH,0);
    c.set(Calendar.DATE, 5);
    // Format Date and insert into months object array
    DateFormat df = new SimpleDateFormat("MM/dd/yyy");
    for (int i =0; i < 52; i++){
        months[i] = df.format(c.getTime());
        c.add(Calendar.DATE, 7);
    }

    //Insert Months array into jComboBox
    jComboBox1.setModel(new DefaultComboBoxModel(months));
    ...
    ...

    //Action performed retrieves selection from jComboBox and insert into table

    private void jComboBox1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

        // object[] o gets selection from selectedItem()
        Object[] o = (Object[]) jComboBox1.getSelectedItem();

        //error checking to println
        System.out.println(jComboBox1.getSelectedItem() + "    ");

        // create DefaultTableModel and insert into row zero with the object selected
        DefaultTableModel model = (DefaultTableModel) weeklyCalendar.getModel();

        //insert into row, throws error
        model.insertRow(0, o);
    }

我想我从getSelectedItem() 得到一个字符串并尝试将其转换为Object[] 并抛出错误异常......我能做些什么来解决这个问题?

【问题讨论】:

  • 答案贴在这里stackoverflow.com/questions/1018750/…只要做反转
  • getSelectedItem 返回 Object,而不是 String[]
  • 是的,对于该行,它根本不会返回一个数组。你到底想用数组做什么?
  • 显然它没有返回一个对象。告诉我的字符串
  • 感谢大家的快速回复!

标签: java jtable jcombobox japplet


【解决方案1】:

如果需要数组,请改用jComboBox1.getSelectedObjects()

虽然对于 String 而言不是必需的,但您可能希望在执行此行时对返回的 Object 调用 .toString(),以防万一您存储的 Object 不是 String。

//error checking to println
System.out.println(jComboBox1.getSelectedItem() + "    ");

请注意,.getSelectedObjects() 方法不是首选方法,因为它仍然只返回 Object[] 数组中的单个元素。如果您需要一个数组,那么使用.getSelectedItem() 并在事后将结果存储在一个数组中会更容易。

*已编辑以反映评论反馈。

【讨论】:

  • 啊,谢谢!你真是个聪明人!我想如果我做一些研究,我会发现我可以得到和对象。
  • 这有点错误,抱歉。 getSelectedObjects 仅返回单个元素数组,并且根据文档是出于与 ItemSelectable 的兼容性原因而实现的。如果对象在字符串连接表达式中,您也不需要调用 toString:它会自动调用。
  • 我同意,但我认为我试图根据他试图做的事情来回答这个问题。我通常放入 toString() 调用只是为了保持一致,这样如果您存储了 String 以外的对象,您仍然可以进行有效的打印。感谢您的反馈。
【解决方案2】:

您不能将完整的字符串数组转换为对象数组。您将不得不单独铸造元素。创建一个将所有 String 类型的元素转换为 Object 的方法。

【讨论】:

  • 即使这是问题所在,也不一定正确,因为数组在 Java 中是协变的。因此,例如 Object[] objs = new String[] { "hello" }; String[] strs = (String[])objs; 是一个有效的演员表。另一方面,Object[] objs = { "hello" }; String[] strs = (String[])objs; 会抛出异常。
【解决方案3】:

这里有两条重要的线:

jComboBox1.setModel(new DefaultComboBoxModel(months));

Object[] o = (Object[]) jComboBox1.getSelectedItem();

您不是想将String[] 转换为Object[],而是将String 转换为Object[],因为getSelectedItem 返回单个项目。

我相信你想要的就是这个:

Object o = jComboBox1.getSelectedItem();

或者这将是一个有效的演员:

String s = (String)jComboBox1.getSelectedItem();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多