Retornar um objeto e modificar outros parametros

5 respostas
I

Ola pessoal.

Precisei criar uma funcao em java que retornasse um objeto e alem disso modificasse um parametro enviado a funcao. Esse parametro era um inteiro. Como inteiros simples sao passados por valor, mesmo que eu modificasse ele dentro da funcao, nao estaria modificado na funcao chamadora. Sabendo disso criei um vetor objeto de 1 posicao pois os vetores sao passados por referencia(Ou o valor da referencia como queiram). Sendo assim consegui o que estava pretendendo. Mas achei muito feio fazer isso, sendo assim, criei uma classe com o inteiro que eu queria modificar e utilizei as funcoes set e get para modificar e acessar o inteiro, respectivamente. Mas agora achei chato ter que criar uma nova classe. Eu sou iniciante em java e nao sei outro modo de fazer.
Voces me propoem algo melhor que as duas alternativas feitas por mim ???

5 Respostas

I

Ninguem sabe outro modo de fazer ou nao tem ???
Se nao tiver. Fico descontente com o java. Sinceramente.
No c++ ou c apenas colocaria um & e pronto.

victorwss

Você pode criar uma classe mais ou menos assim

public final class Ponteiro<E> {

    private E valor;

    public Ponteiro(E valor) {
        this.valor = valor;
    }

    public E getValor() {
        return valor;
    }

    public void setValor(E valor) {
        this.valor = valor;
    }
}
I

Victor Williams Stafusa da Silva,

Entao eu teria mesmo que criar uma classe e utilizar metodos set e get dela ???
Nao ha outro modo ???

T

O que o programador Java faz quando precisa simular passagem de parâmetros por referência:
a) Faz o que o victorwss fez, ou seja, cria um objeto que encapsula esse retorno.
b) Se for um parâmetro ou dois de tipo primitivo ou String (ou algum outro tipo imutável), use uma gambiarra sem tamanho que é a passagem de um array de 1 elemento. Eu já fiz isso mas não recomendo - deixa seu código confuso.
c) Se quiser algo parecido, o C# tem a palavra-chave “ref”. (Como você deve saber, um dos arquitetos do C# era o sr. Anders Hejlsberg, que arquitetou a versão Microsoft do Java, que também achou que faltava isso no Java :stuck_out_tongue: )
c) Se for algo meio desestruturado, que não mereça a criação de uma nova classe, passe um Map<String, Object> e ponha os valores…

victorwss

Na verdade a API do java é em geral projetada de uma forma que não necessite disso. Embora confesso que eu não sei o porquê.

Criado 18 de abril de 2008
Ultima resposta 18 de abr. de 2008
Respostas 5
Participantes 3