Il metodo lastIndexOf() dell'interfaccia Elenco accetta un parametro che è di tipo Oggetto.Perché il metodo lastIndexOf() dell'interfaccia Elenco accetta Oggetto come parametro e non E?
Tuttavia, il metodo add() accetta un parametro di tipo E (che è il generico tipo di elenco che è definita al momento della creazione di un elenco) Da add() accetta solo E, ciò impedisce lo sviluppatore (o utente) per aggiungere qualsiasi oggetto incompatibile alla lista in fase di compilazione stessa.
Ora, il documento Java dice che lastIndexOf() può lanciare ClassCastException se l'oggetto passato è incompatibile. Tuttavia, quando si esegue il seguente codice in Eclipse Helios non ottengo alcuna eccezione: -
package scjp.collection.list;
import java.util.ArrayList;
import java.util.List;
public class LastIndexOf {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("some");
list.add("thing");
list.add("at");
list.add("last");
list.add("and");
list.add("at");
list.add("again");
System.out.println(list.lastIndexOf("at"));
System.out.println(list.lastIndexOf(10)); // # 1
System.out.println(list.lastIndexOf(new LastIndexOf())); // # 2
}
}
Alla Linea 1 e Linea 2, mi sono passati oggetti incompatibili alla mia lista, che è di tipo String. Tuttavia, l'output che ottengo è: -
5
-1
-1
non ottengo ClassCastException.
Se il metodo lastIndexOf() avesse accettato oggetti di tipo E anziché oggetti di tipo Object, questo sarebbe stato impedito solo in fase di compilazione. Perché non è fatto ??
I creatori Java devono aver pensato ad un problema che potrebbe verificarsi se accetta E (e non Object). Che male sarebbe ??
guardare http://docs.oracle.com/javase/1.5.0/docs/api/index.html. È chiaramente menzionato che l'argomento è un oggetto e ora l'eccezione è trown. – xyz