Equivalente a void *
Soy nuevo en Java y tengo que hacer varios programas que utilicen datos genéricos. Hasta ahora lo hacía en ANSI C con punteros void *, donde guardaba cualquier dato posible gracias a malloc y al casting.
¿Cuál sería el método equivalente para hacer ésto en Java?
¿Cuál sería el método equivalente para hacer ésto en Java?
La jerarquia de clases en Java tienen una raiz en común: java.lang.Object; todas las clases descienden de Object y por lo tanto puedes usar Object como tu referencia generica.
Object x = "Una cadena"; //Las cadenas son objetos de java.langString
String s = (String)x;
Integer i = (Integer)x; //Error, se genera una excepción
Sin embargo tal vez desees usar la nueva sintaxis que permite usar genericos en Java, al estilo de Ada, o muy en cierta forma, C++. Un ejemplo:
class Prueba<T> {
private T dato;
public void setDato(T dato) {
this.dato = dato;
}
public T getDato() {
return this.dato;
}
}
Prueba laPrueba<String> = new Prueba<String>();
laPrueba.setDato("Una cadena");
String x = laPrueba.getDato(); //sin casting
Claro que para esto debes usar Java 5.0
Jesús
Object x = "Una cadena"; //Las cadenas son objetos de java.langString
String s = (String)x;
Integer i = (Integer)x; //Error, se genera una excepción
Sin embargo tal vez desees usar la nueva sintaxis que permite usar genericos en Java, al estilo de Ada, o muy en cierta forma, C++. Un ejemplo:
class Prueba<T> {
private T dato;
public void setDato(T dato) {
this.dato = dato;
}
public T getDato() {
return this.dato;
}
}
Prueba laPrueba<String> = new Prueba<String>();
laPrueba.setDato("Una cadena");
String x = laPrueba.getDato(); //sin casting
Claro que para esto debes usar Java 5.0
Jesús
