Retorno de métodos

Ola galera !! gostaria de saber se é possivel retornar dois parametros em um método por exemplo…

chamada do método


responseVO.setArquivoRetorno(downloadarquivo(source, requestVO));

método

private String downloadarquivo(String source, FT17RequestVO requestVO)throws HandleException {

		FT17ResponseVO responseVO = new FT17ResponseVO();
		String arquivo = "";

		try {
			LocalFileUtil fileUtil = new LocalFileUtil(source);
			List<File> files = fileUtil.getFiles("");

			byte[] buf = new byte[1024];
			int len = 0;

			log.info("Generating FT17 download of object");

			for (File file : files) {

				InputStream in = null;
				ByteArrayOutputStream out = null;

				try {
					in = new FileInputStream(file);
					out = new ByteArrayOutputStream();

					if (file.getName().contains(requestVO.getNomeArquivo())) {
						len = in.read(buf);
						out.write(buf, 0, len);
						out.flush();
						// arquivo convertido para base 64
						arquivo = Base64.encode(out.toByteArray());
						responseVO.setCodigoRetorno(0);
					}

				} catch (Exception e) {
					log.warn("Fail to download file " + file.getName()
							+ " in responseVO", e);
					responseVO.setCodigoRetorno(1);
				} finally {
					try {
						if (in != null) {
							in.close();
						}
						if (out != null) {
							out.close();
						}
					} catch (IOException e) {
						log.warn(
								"Fail to close streams for file "
										+ file.getName(), e);
						responseVO.setCodigoRetorno(1);
					}
				}
			}
		} catch (IntegLayerException e) {
			throw new HandleException(
					IntegLayerErrorCodes.ERROR_BUILDING_RESPONSE, e);
		}

		return arquivo;
                return responseVO; //é possivel fazer algo assim ??retornar os dois parametros ""responseVO" e "arquivo"
	}

vlw obrigado

Não cara… quando se chega na instrução return, nada mais no método será executado…

Na verdade, da forma que está acho que nem compila…

O que podes fazer, se é que é realmente necessário (não sei qual o real problema), é encapsular teus 2 retornos em um único Objeto e retornar esse Objeto ao invés dos 2 isoladamente…

De repente coloca o arquivo dentro do teu ResponseVO…

Outra coisa que percebi em seu código, o método está declarando que vai retornar uma String… Como agora você quer responder com um VO ou arquivo ??? só poderias retornar arquivo

Abs []

Olá amigo, você poderia retornar um map ou um array com os valores que quiser. Fica mais estético e elegante.
Fallow Abraço

esse condigo funciona sim o meu problema eh realmente esse…
eu retorno o “arquivo” tudo certo sem problemas porem eu teria que retornar junto o tal do “codigo retorno” que verifica se tudo ocorreu certo…
o que eu faço hoje é depois de retornar aquivo la em cima depois da chamada do método eu faço uma verificação e ai seto o tal do codigo retorno
porem é uma pog… pq essa verificação deveria ser feita dentro do método em tempo de execução e ser retornado junto ao “arquivo” meio estranho mesmo…

algm teria mais uma dica???
obrigado estou testando as possibilidades vlw galera

[quote=juliocesarsrosa]esse condigo funciona sim o meu problema eh realmente esse…
eu retorno o “arquivo” tudo certo sem problemas porem eu teria que retornar junto o tal do “codigo retorno” que verifica se tudo ocorreu certo…
o que eu faço hoje é depois de retornar aquivo la em cima depois da chamada do método eu faço uma verificação e ai seto o tal do codigo retorno
porem é uma pog… pq essa verificação deveria ser feita dentro do método em tempo de execução e ser retornado junto ao “arquivo” meio estranho mesmo…

algm teria mais uma dica???
obrigado estou testando as possibilidades vlw galera[/quote]

Julio, qual exatamente o retorno que precisa?
Abraços.

eu retorno o “arquivo” que é do tipo string, porem além dele preciso retornar o “codigoRetorno” que é do tipo int

Foram lhe dadas duas boas alternativas:

1 - Um objeto que contenha as duas necessidades
2 - Um map, onde a chave seria o “codigoRetorno” e o valor é o seu “arquivo”.

1:

class seuObjeto {
   private String file;
   private int code;
  // getters and setters

2:

   seuMap.put(codigoRetorno, arquivo);

É o que foi dito e apoio a idéia.
Ainda prefiro a primeiro opção, da criação de um objeto, até porque, se quiseres, podes retornar uma lista desse objeto :slight_smile:
Abraços.