Используйте if ( id == dTemp.id )
. Перечисления являются классами, а значения перечислений являются объектами, а не целыми, и поэтому не могут быть преобразованы (ни явным, ни неявным образом) в int
.
В качестве альтернативы обратите внимание, что перечисления имеют порядковый номер, то есть идентификатор их положения. В вашем примере Monday
будет иметь порядковый номер 0, а Sunday
будет иметь порядковый номер 6. Вы получаете доступ к порядковому номеру, вызывая метод ordinal()
.
Таким образом, если id
основано на одном, вы можете сделать следующее:
public static Day getByID(int id) {
//check id is between 1 and 7, I'll leave that for you
return Day.values()[id - 1];
}
Обратите внимание, что вы можете кэшировать Day.values()
в приватной статической переменной и затем обращаться к этому кешированному массиву.
Кстати, где строка, которую вы упоминаете в своем вопросе?