- Jak dokładnie obiekty EnumSet są wystąpienia i stosowane?
EnumSet jest „klasa abstrakcyjna” i jest korzystny niż HashSet gdy masz kilka „klucze”, które jest znane z góry. Na przykład, gdy masz klucze konfiguracyjne.
Występ są lepsze niż HashSet bo "... ponieważ stałe Enum są unikalne i wstępnie określonej długości, ponieważ nie można zdefiniować nową enum stałą w czasie wykonywania, pozwala projektantowi Java API do bardzo optymalizują EnumSet ... "(Czytaj więcej: http://javarevisited.blogspot.com/2014/03/how-to-use-enumset-in-java-with-example.html#ixzz3jNcyB8ve)
można wystąpienia z partii metody fabryki, na przykład EnumSet.of (...)
- Dlaczego mogę użyć metody add() dla obiektów EnumSet?
Po utworzeniu „EnumSet” obiekt można dodać w czasie wykonywania kolejny element z „Dodaj” metody. Jeśli masz na przykład listę kluczy konfiguracyjnych, które możesz reprezentować przez EnumSet, wybierz "wybrane" klucze i dodaj je w czasie wykonywania.
package sample.test;
import java.util.EnumSet;
public class Foo {
public enum SimpleConfigEnum { KEY1, KEY2, KEY3};
/**
* Example of EnumSet with add
*/
public static void main(String[] args) {
//Create an enumSet with two elements: KEY1,KEY2
EnumSet<SimpleConfigEnum> eSet = EnumSet.of(SimpleConfigEnum.KEY1, SimpleConfigEnum.KEY2);
System.out.println(eSet);
//... add another element --> KEY3
eSet.add(SimpleConfigEnum.KEY3);
System.out.println(eSet);
}
}
Wyjście jest:
[KEY1, KEY2]
[KEY1, KEY2, KEY3]
powinien zawierać że EnumSet implementuje interfejsy AbstractSet narzędzi. Zapewnia to, że add(), iterator(), remove(), ... jest w umowie dla EnumSet. – Taemyr