Vectores en Java

Estoy trabajando con Eclipse, creando un SI en Java, primero que todo es necesario trabajar con SDK 1.4 ya que de la forma que los tenia creados bajo SDK 6 no funcionan con 1.4. (políticas de la empresa)
La idea es: Crear un vector que me almacene una cadena de información que se extrae de la base de datos, son diferentes tipos de datos, yo los tenia creados así:
public Vector<AltoDTO> getAltos() throws ConnectionException, SQLException {
Vector<AltoDTO> altos= new Vector<AltoDTO>();
AltoDTO alto;
PreparedStatement ps;
ResultSet resultado;
En donde AltoDTO es una clase importada.
Y de ahí sigue toda la linea de código no importante... El problema radica en que ese vector no me lo reconoce con 1.4 y me dijeron que la razón es porque es un vector tipado o algo así...
Me dijeron que lo creara algo así como Vector = new vector o algo así... Pero la verdad no se como... ¿me podes ayudar?
Respuesta
1
Siento la tardanza ya que he estado muy liado estos días
Es simplemente eso que te han dicho. El tipado de los tipos compuestos como Colecciones o Vectores empieza en JDK 1.5, así que no te valdrá en 1.4. Simplemente tienes que quitarle el tipo. Por ejemplo:
1.5 y superior:
Vector<AltoDTO> altos= new Vector<AltoDTO>();
1.4 e inferior:
Vector altos = new Vector();

2 respuestas más de otros expertos

Respuesta
1
Tienes una clase que se llama CLASE
si quieres crear un vector de esa CLASE con un tamaño n
entonces la declaracion es
vector = new CLASE[n];
ahora para el almacen de cada uno de sus elementos tienes que hacer un constructor para cada uno
por ejemplo si tu constructor de tu clase CLASE es
public CLASE(int numero,int numero2){
... codigo...
}
entonces para ir almacenando en tu vector sería
vector[0]= new CLASE( aqui ingresa los parametros que se usan en tu constructor);
para el siguiente tambien de la misma manera
vector[1] = new CLASE( igresa parametro);
Lo mejor es que hagas un bucle para llenar tu vector, esto sería todo
Respuesta
1
Lo que pasa que el tipo de vector que estas utilizando es un tipo genérico que lo crearon hasta la version 1.5 de java, por lo tanto la version 1.4 no lo va a reconocer.
La forma antigua de utilizarlo es de la siguiente:
Vector altos= new Vector();
AltoDTO alto;
PreparedStatement ps;
ResultSet resultado;
altos.add(alto);
para obtener el dato es de esta forma:
alto =(AltoDTO) altos.get(index);
Tendrás el inconveniente de que si el vector tiene otro tipo de objeto lanza una exception de tipo ClassCastException, precisamente por eso se crearon los genéricos, es mejor un error en tiempo de compilación que en tiempo de ejecución.
Pero ni modo, si quieres seguir usando la version 1.4 lo puedes hacer con esos inconvenientes
Hola... y gracias por ayudarme---
Surge algo... el vector... está creado tal cual me decís y funciona... pero el problema es en el momento de declarar las excepciones y en el momento de obtener los valores...
Yo lo tengo así... pero no se como interpretar o cambiarlo
@return Vector de objetos "AltooDTO" que contienen los datos del Informe
@throws SQLException Si ocurre un error de acceso a la BD o la sentencia SQL no retorna un objeto ResultSet
@throws ConnectionException Si se produce un error de acceso a la BD.
public Vector<AltoDTO> getAlts() throws ConnectionException, SQLException {
Vector<AltoDTO> altos= new Vector<AltoDTO>();
AltoDTO alto;
PreparedStatement ps;
ResultSet resultado;
conectar();
ps = conexion.prepareStatement(conexion.getStatement("obtenerAltos")); 
resultado = ps.executeQuery();
while (resultado.next()) {
alto= new AltooDTO();
alto.setId_alto(resultado.getInt("id_alto"));
... y así sucesivamente con el resto de campos...
No se si tal vez me podas ayudar a cambiar esto ya que la verdad he intentado y sigue saliendo error... Y el problema con trabajar con 1.4 no es que quiera sino que la empresa viene trabajando así y en el momento de subir la aplicación generaría error...
Espero me podas ayudar y de nuevo mil gracias!"!
Te dije que quitaras los genéricos de esta forma:
public Vector getAlts() throws ConnectionException, SQLException {
Vector altos= new Vector();
AltoDTO alto = null;
PreparedStatement ps = null;
ResultSet resultado= null;
conectar();
ps = conexion.prepareStatement(conexion.getStatement("obtenerAltos")); 
resultado = ps.executeQuery();
while (resultado.next()) {
alto= new AltooDTO();
alto.setId_alto(resultado.getInt("id_alto"));
...
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas