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
Author: arshajii, 2013-08-22

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