Быстрый ответ - вы вызываете конструктор со своими параметрами. В Java:
public class Contact {
private final String firstName;
private final String middleName;
private final String lastName;
private final Date birthday;
public Contact(
String firstName,
String middleName,
String lastName,
Date birthday
) {
this.firstName = firstName;
this.middleName = middleName;
this.lastName = lastName;
this.birthday = birthday;
}
… // getters
}
… inside while loop:
contacts.add(new Contact(
rs.getString("first_name"),
rs.getString("middle_name"),
rs.getString("last_name"),
new Date(birthday.getTime())
);
Я пока оставил необязательный день рождения, мы добавим его обратно в версию Scala.
У нас все еще есть изменяемый список контактов, поэтому давайте посмотрим, как сделать его должным образом неизменным. Мы будем использовать список Scala. Во-первых, объект данных scala:
case class Contact(
first: String,
middle: String,
last: String,
birthday: Option[Date])
У нас есть дополнительный день рождения в качестве бонуса.
Теперь давайте определим простой метод извлечения, учитывая набор результатов:
def contacts(rs: ResultSet) = {
@annotation.tailrec def loop(cs: List[Contact]): List[Contact] =
if (!rs.next()) cs else loop(
Contact(
rs.getString("first_name"),
rs.getString("middle_name"),
rs.getString("last_name"),
Option(rs.getLong("birthday"))
) :: cs)
loop(Nil)
}
Эта версия рекурсивно создает односвязный список всех контактов в вашем ResultSet. Это неизменное.