我有这样的方法:
public List<Employee> getEmployeeListViaSurname(String surname) {
List<Employee> EmployeeListViaSurname = new ArrayList<Employee>();
int id = -1;
String name = "";
try {
PreparedStatement pst = null;
pst = con.prepareStatement("select * from Employee where surname = ?");
pst.setString(1, surname);
ResultSet rs = pst.executeQuery();
while (rs.next()) {
id = rs.getInt("id");
name = rs.getString("name");
//EmployeeListViaSurname.add(id, name); <---- error
}
} catch (Exception e) {
System.err.println(e);
}
return EmployeeListViaSurname;
}
有人可以告诉我如何通过姓氏添加员工。
例如getEmployeeListViaSurname(&#34; George&#34;);
答案 0 :(得分:2)
EmployeeListViaSurname
是一个java列表,其中包含Employee
个对象,如其类型声明和初始化(&lt;&gt;括号中的类型名称)所示:
List<Employee> EmployeeListViaSurname = new ArrayList<Employee>();
java sdk文档包含标准java库的所有信息,告诉您可用的类,方法签名以及如何使用它们。在这种情况下,请参阅documentation for List.add(E)(Google java api docs List
或java api docs ArrayList
)。
请注意,它需要一个E
对象,该对象应与列表参数化的对象类型相同,在您的情况下为Employee
。但是你传递的是int
和String
,所以在尝试编译它时会失败,你会得到一个语法错误。
要解决此问题,首先使用其中一个构造函数实例化一个新的Employee
对象,然后将其传递给add
方法。例如。类似的东西:
while (rs.next()) {
id = rs.getInt("id");
name = rs.getString("name");
Employee employee = new Employee(id, name, surname);
EmployeeListViaSurname.add(employee);
}
您创建和初始化Employee
对象的具体细节取决于Employee
class definition。
构造函数是一种特殊方法,没有与类同名的返回类型,看起来像public Employee() { ... }
或public Employee(String id, String name, String surname) { ... }
。如果它只有一个无参数构造函数,则使用它然后设置字段。
如果您需要更多帮助,则需要向我们提供Employee
课程的详细信息。
答案 1 :(得分:1)
ArrayList
包含对象 - 在您的情况下为Employee
个对象,您必须创建一个对象才能添加到ArrayList中 - 您无法直接添加属性:
// provided a fitting Employee constructor exists:
EmployeeListViaSurname.add( new Employee( id, name ) );
干杯,