Jaka jest różnica między ' & 'i', ' w generikach Java?
Czytając oficjalny samouczek Javy o generikach, odkryłem, że można ograniczyć argument type (w tym przypadku jest to T
) do rozszerzenia klasy i/lub większej liczby interfejsów z operatorem' and ' (&
) w następujący sposób:
<T extends MyClass & Serializable>
Zamieniłem &
na ,
(przez pomyłkę i nadal działa, z drobnym ostrzeżeniem).
Moje pytanie brzmi, czy jest jakaś różnica między tymi dwoma:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
I przykładowa metoda:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
110
1 answers
<T extends MyClass & Serializable>
To zapewnia, że pojedynczy parametr typu {[2] } musi rozciągać MyClass
i musi być Serializable
.
<T extends MyClass , Serializable>
ten deklaruje dwa parametry typu, Jeden o nazwie T
(który musi rozszerzyć MyClass
) i jeden o nazwie Serializable
(który ukrywa java.io.Serializable
- o to prawdopodobnie chodziło w ostrzeżeniu).
170
Author: arshajii,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 12:23:53
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-24 12:23:53