Às vezes, você deseja retornar vários valores de uma função. Como isso é feito normalmente em Java?
Uma opção é usar uma matriz, como este trecho de código Python que retorna uma lista ou tupla:
value, success = read_unreliably()
if success:
print value
Outra opção seria retornar um hash / dict, como este exemplo de JavaScript:
var result = readUnreliably()
if (result.success) {
alert(value);
}
Mais um seria criar um objeto personalizado apenas para esse fim, como este exemplo de Java:
ReadUnreliablyResult result = readUnreliably()
if (result.getSuccess()) {
System.out.println(result.getValue());
}
É claro que você também pode usar algumas variáveis globais para armazenar o que precisa, em vez de repassar as coisas, mas digamos que não é uma opção.
java
coding-style
Mike M. Lin
fonte
fonte
Respostas:
Dolorosamente.
Essas técnicas não funcionam bem em Java; os valores teriam que ser baixados do objeto.
Isso é mais comum, mas é tedioso criar todas essas pequenas classes. Em C ++, é comum usar std :: pair, mas isso geralmente não é feito em Java.
Com o Lombok , é muito fácil criar pequenos objetos personalizados:
}
fonte
Sim, a maneira de criar um
struct
/tuple
/record
em Java é criando uma classe. Se for apenas para uso interno, prefiro usar uma pequena classe imutável de estrutura com campos públicos.Exemplos:
Isso é muito mais fácil de fazer no Scala:
fonte
Tuple2[Boolean, Int]
. Embora neste exemplo específico , você retorne umOption[Int]
.Para o exemplo que você deu, lançar uma exceção seria a maneira mais padrão de lidar com isso:
Além disso, se você se esforçar para ter funções que "realizem uma coisa", o recurso de retornar vários valores é menos necessário, embora ocasionalmente conveniente.
fonte
Temos uma classe genérica Pair que pode armazenar uma instância de A e uma instância de B. Você provavelmente pode criar um Tripleto ou Quádruplo da mesma maneira.
fonte
Pair<String, Integer>
, o que isso significa? o que esses valores representam? você não pode saber sem ler a implementação do método.Em Java, sua função retornaria um objeto (ou talvez nulo no caso de uma falha). Dessa forma, vários dados podem ser retornados.
fonte
Não há uma maneira explícita de retornar várias variáveis em Java, no entanto, existem algumas abordagens:
fonte