gpt4 book ai didi

java.lang.String 无法转换为 [Ljava.lang.Object;

转载 作者:行者123 更新时间:2023-12-02 09:18:50 24 4
gpt4 key购买 nike

我想在组合框中调用类(class)名称并打印所选类(class)名称的类(class) ID 我该如何解决这个问题?

    public void coursename(){
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query= session.createQuery("select a.courseName,a.courseId from Semester e inner join e.course as a");
for (Iterator it = query.iterate(); it.hasNext();) {
Object row[] = (Object[]) it.next();
combocourse.addItem(row[0]);
}
session.close();
}


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


JComboBox combocourse = (JComboBox)evt.getSource();
Object row[] = (Object[])combocourse.getSelectedItem();
System.out.println("id"+row[1] );

}

最佳答案

不尝试将String 转换为Object[]。查看您正在使用的方法的返回值,并使用适当类型的变量来存储这些返回值。 JComboBox#getSelectedItem返回一个Object(在本例中显然是一个String),而不是一个数组(任何类型)。但在这一行中:

Object row[] = (Object[])combocourse.getSelectedItem();

...您尝试将其转换为 Object[] (Object 数组),以便可以将其存储在 Object[ ]。你不能这样做。

看起来row应该只是ObjectString,而不是Object[],并且当如果你使用它,你应该直接使用它,而不是像 row[1]:

Object row = combocourse.getSelectedItem();  
System.out.println("id"+row );

或者

String row = (String)combocourse.getSelectedItem();  
System.out.println("id"+row );
<小时/>

在您提出的评论中:

I called coursename in combobox but i should save course id in my database. How can I get courseId?

我不知道JComboBox。从根本上讲,您需要存储包含两个值(ID 和名称)的内容,然后在获取所选项目时使用该内容。除非 JComboBox 具有一些内置功能,否则您可能需要一个简单的类来保存值并通过返回 courseName 来实现 toString 。隐约类似于:

class CourseItem {
private String courseName;
private String courseId; // Or int or whatever

CourseItem(String courseName,String courseId) {
this.courseName = courseName;
this.courseId = courseId;
}

public String getCourseName() {
return this.courseName;
}

public String getCourseId() {
return this.courseId;
}

public String toString() { // For display
return this.courseName;
}
}

然后:

public void coursename() {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("select a.courseName,a.courseId from Semester e inner join e.course as a");
for (Iterator it = query.iterate(); it.hasNext();) {
Object row[] = (Object[]) it.next();
combocourse.addItem(new CourseItem((String)row[0], (String)row[1]));
}
session.close();
}

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


JComboBox combocourse = (JComboBox) evt.getSource();
CourseItem item = (CourseItem)combocourse.getSelectedItem();
System.out.println("id" + item.getCourseId());

}

关于java.lang.String 无法转换为 [Ljava.lang.Object;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23651751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com