En la clase que se nos enseña el metodo de "try-with-resources" el profesor hace uso de la palabra "final" antes de cada recurso que nosotros deberíamos cerrar posteriormente.
Ahora, si nosotros no hacemos uso de "final" y utilizo try(nombre del recurso) obtengo el mismo resultado. La conexion se cierra igualmente, no marca error de sintaxis, ni obtengo ninguna exception.
Mi duda es: si ¿Es obligatorio o no el uso de la palabra?
Ejemplo usando "final":
final Connection con = new ConexionFactory().recuperaConexion();
try(con){
final PreparedStatement statement = con.prepareStatement("DELETE FROM producto WHERE id = ?");
try(statement){
statement.setInt(1, id);
statement.execute();
System.out.println("Eliminado el producto con id: " + id);
int cantidad = statement.getUpdateCount();
return cantidad;
}
}
Ejemplo sin utilizar "final":
Connection con = new ConexionFactory().recuperaConexion();
try(con){
PreparedStatement statement = con.prepareStatement("DELETE FROM producto WHERE id = ?");
try(statement){
statement.setInt(1, id);
statement.execute();
System.out.println("Eliminado el producto con id: " + id);
int cantidad = statement.getUpdateCount();
return cantidad;
}
}
Quizas está mal no usarla porque la conexion nunca se cierra, pero no sabría como comprobarlo