creo que el mejor partido a Java de List<?>
sería C# 4.0 IEnumerable<out T>
Si usted tiene un método que toma List<?>
de lo que puede llamar con List<Object>
y List<String>
así:
List<Object> objList = new List<Object>();
List<String> strList = new List<String>();
doSomething(objList); //OK
doSomething(strList); //OK
public void doSomething(List<?> theList) {
///Iterate through list
}
C# 4.0 IEnumerable<T>
interfaz es realmente IEnumerable<out T>
, lo que significa que si, por ejemplo, R
deriva de T
, se puede asignar IEnumerable<T>
desde IEnumerable<R>
.
Por lo tanto, todo lo que tiene que hacer es hacer que su doSomething
en DoSomething
y tienen aceptar IEnumerable<T>
parámetro:
List<Object> objList = new List<Object>();
List<String> strList = new List<String>();
DoSomething(objList); //OK
DoSomething(strList); //OK
public void DoSomething<T>(IEnumerable<T> theList) {
///Iterate through list
}
EDIT: Si C# 4.0 no está disponible, siempre se puede caer de nuevo a cualquiera sin tipo IEnumerable
o IList
.
La pregunta es; ¿Es realmente una buena idea, o estarías mejor con seguridad tipo? –
La lista
Sería bueno tener algún contexto ... ¿dónde y para qué se usa esta declaración? –