- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
private enum FolderType{inbound, outbound, archive, rejected}
private String inboundName = "inbound";
private String outboundName = "outbound";
private String archiveName = "archive";
private String rejectedName = "rejected";
// чуть ниже....
private String getFolderTypeName(FolderType type){
switch (type){
case inbound:
return inboundName;
case outbound:
return outboundName;
case archive:
return archiveName;
case rejected:
return rejectedName;
default:
throw new IllegalArgumentException(type.toString());
}
}
gegMOPO4 12.12.2011 12:56 # +1
roman-kashitsyn 12.12.2011 14:01 # 0
gegMOPO4 12.12.2011 14:30 # 0
Steve_Brown 12.12.2011 13:41 # 0
roman-kashitsyn 12.12.2011 13:55 # +2
Если нужно сконфигурить в рантайме (что в моём случае не подразумевается), то решение в топике сойдёт.
Steve_Brown 12.12.2011 14:07 # 0
roman-kashitsyn 12.12.2011 14:08 # −1
SmackMyBitchUp 13.12.2011 09:13 # 0
Не держи знания в себе или чё у тебя там
guestGovno 13.12.2011 10:13 # +1
koodeer 13.12.2011 23:30 # +1
Считаю некорректным енумы C# и C++ называть похожими. Разница между ними огромная. Этак можно выделение памяти в C++ и C# считать одинаковым: хули, оператор new и там, и там!
Я бы прошёл мимо такого сообщения, лишь хмыкнув, если бы его сделал кто-то другой. Но Роман отличается хорошей аргументацией своего мнения, поэтому я счёл правильным обратить его внимание на полную несостоятельность данного поста.
roman-kashitsyn 14.12.2011 10:37 # +2
Схожесть енумов в C# и в C++ в том, что в конечном счёте они интерпретируются как целые числа. Из MSDN: "все ссылки на отдельные значения перечисления преобразуются в числовые литералы во время компиляции".
В Java енумы кардинально отличаются. Там экземпляр перечисления - это финальный наследник абстракного класса. Енумы в Java могут реализовывать интерфейсы (но не могут расширять классы, поскольку в таком случае получается множественное наследование), содержать поля произвольных типов. Они нацелены на удобное и безопасное расширение вариантов числа вариантов без поломки функционала системы.
Т.е. в этом контексте енумы C# гораздо ближе по природе к енумам C++, чем к енумам Java.
Однако, изучая наработки .NET в плане енумов в версии 3.5 вынужден с вами согласиться. Действительно, в C# система перечислений сделала большой шаг в перёд по сравнению с C++-аналогами.
Сейчас ещё придёт defecate-cpp, ткнёт меня носом в буст и скажет, что я не знаю енумов C++
koodeer 14.12.2011 14:44 # 0
А я жду, что кто-нибудь из сиплюсистов начнёт рассказывать про достоинства enum из C++11. :)
3.14159265 14.12.2011 14:52 # 0
И, например, чтобы взять следующий элемент перечисления недостаточно прибавить единицу.
Таки в Аде покруче будет http://en.wikibooks.org/wiki/Ada_Programming/Types/Enumeration
roman-kashitsyn 14.12.2011 15:58 # 0
defecate-plusplus 14.12.2011 15:26 # +1
в с++11 наконец то приняли давнее предложение осовременить это барахло
и таки да, в бусте кое-что есть для решения этих проблем, и даже для эмуляции
inbound("inbound"), outbound("outbound"),
archive("archive"), rejected("rejected"),
но оно даже не в основной ветке буста
в общем я конечно посмотрел, но не пользовался - т.к. в целом проблема олдскульных енумов малокритична
martin 12.12.2011 14:38 # 0
gegMOPO4 12.12.2011 14:27 # 0
Для рантайма — EnumMap.
guest 13.12.2011 08:42 # 0
roman-kashitsyn 13.12.2011 09:10 # 0
Steve_Brown 13.12.2011 10:14 # 0
wvxvw 13.12.2011 19:41 # 0
Lure Of Chaos 13.12.2011 19:45 # 0
roman-kashitsyn 13.12.2011 19:52 # 0
guest 13.12.2011 22:10 # 0
3.14159265 14.12.2011 16:18 # 0
Это паттернизм прочно засел в голову.
wvxvw 13.12.2011 22:12 # 0
roman-kashitsyn 13.12.2011 19:54 # 0
guest8 09.04.2019 12:20 # −999