2013-02-14 2 views
0

Вот сомнение, что меня озадачило какое-то время.Сравнение enum с int, Calendar Class

Использование класса Calendar для того, чтобы сравнить календарь перечисления valune, пример:

Calendar c = Calendar.getInstance(); 

if (c.SUNDAY == c.getFirstDayOfWeek()); //US local 
System.out.println("indeed"); 

Так в принципе, я хотел бы знать, как это может быть возможно на самом деле сравнить перечисление (ВОСКРЕСЕНЬЕ) в getFirstDayOfWeek (), который возвращает int.

Заранее благодарим за ответы.

+0

'Calendar.SUNDAY' не является значением перечисления, потому что' Calendar' (достаточно очевидно) не является 'enum', это' class'. Это 'public static final int' - целочисленная константа. Джавадоки сказали бы тебе. – millimoose

ответ

1

SUNDAY - статическое конечное поле в API календаря. это не переименование. и getFirstDayOfWeek() возвращает значение int (день недели в int-представлении), поэтому сравнение действительно.

От Calendar Source:

576  public final static int SUNDAY = 1; 
+0

Хорошо, хотя я проверил API, я был уверен, что они были установлены как перечисление. Мой плохой, мне пришлось искать более подробно, чтобы преодолеть мои сомнения. Благодарю. – Rollerball

+0

@Rollerball API wodn't ложь бы это ?? .. хе-хе, вы всегда можете проверить источник онлайн :) – PermGenError

1

c.SUNDAY также INT (а не Enum), так что нет никаких проблем.

Конечные значения календаря хранятся как int.

Таким образом, он создает «общий язык» для всех констант, когда фактическая реализация (int) на самом деле не имеет значения.

Calendar class