gpt4 book ai didi

java - 无法使用 get(index) 显示对象数组

转载 作者:行者123 更新时间:2023-12-01 09:15:18 25 4
gpt4 key购买 nike

我正在尝试在 ArrayList 中显示不同的对象。在我的项目环境中,一名学生就是一个对象。

我使用 ArrayList 来存储所有不同的学生对象,但在读取 ArrayList 时遇到问题。

 <%
String student_name = request.getParameter("studentName");
ArrayList<Object[]> studentList = new ArrayList<Object[]>();
if(student_name != null && student_name.length() > 0) {
PreparedStatement preparedStatement = con.prepareStatement("Select * from users where firstname LIKE ? ");
preparedStatement.setString(1, "%" +student_name+ "%");
ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
String first_name = resultSet.getString("firstname");
String last_name = resultSet.getString("lastname");
String email = resultSet.getString("email");

Object[] student = {first_name,last_name,email};
studentList.add(student);
session.setAttribute("studentObject",studentList);


//System.out.println("First Name: " + first_name + "," + "Last Name: " + last_name);
System.out.println(studentList.get(0));


}

当我尝试显示 (studentList.get(0)) 时,我看到的只是“[Ljava.lang.String;@XXXX”

我如何让它根据索引显示不同的学生对象?

最佳答案

首先,在 Java 中定义自己的类 Student 更为惯用。为该类编写一个提取器,定义 toString 方法,这会很棒。

Java 要求您为要打印的任何类型的对象定义 toString 方法。因此,您必须为您的 Student 类定义 toString

但是你正在使用一个数组。 Java 没有为数组定义 toString 方法。所以我建议你做这样的事情。 (我有点着急,所以代码可能包含一些错误:

// At first it could be better to define a structure
// that represents a student
// class must be defined in separate file like Student.java
// Student.java
public class Student {
// constructor for the Student object
public Student(final String firstName,
final String lastName,
final String email) {

this.firstName = firstName;
this.lastName = lastName;
this.email = email;
}

private String firstName;
private String lastName;
private String email;

@override String toString() {
return firstName + " " + lastName + " " + email;
}

// getters
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String getEmail() { return email; }

// setters
public void setFirstName(final String firstName) {
this.firstName = firstName;
}

public void setLastName(final String lastName) {
this.lastName = lastName;
}

public void setEmail(final String email) {
this.email = email;
}
} // end of Student.java file
///////////////////////////////////////////

final ArrayList<Student> studentList = new ArrayList<Student>();

.... // your code

ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
// creating a new student with new keyword
final Student currentStudent = new Student(
resultSet.getString("firstname"),
resultSet.getString("lastname"),
resultSet.getString("email")
)

// you are adding a student object to the list
studentList.add(currentStudent);
session.setAttribute("studentObject",studentList);

// that should work
// toString method will be called implicitly
System.out.println(studentList.get(0));
}

// So you will have a list of students
// that will be accessable in the following manner:

studentList.get(0).getFirstName;
studentList.get(1).setFirstName("New name");

如果您想要不同的行为,您可以直接调用这些字段,或修改toString 方法的行为

Java 还假设您使用驼峰命名法,您可以在 style guide 中找到.

希望有帮助。

关于java - 无法使用 get(index) 显示对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40592679/

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