Passar valor mixto para parâmetro de função

10 respostas
A

Como passar um parâmetro tipo mixed para um método. Ou seja, como fazer para um mesmo parâmetro ler uma string ou um valor inteiro por exemplo?

10 Respostas

S

Em que vc irá usar algum método assim?
Podemos pensar em outra solução.
Uma variável nasce e morre do mesmo tipo.

R

Olá amigo,

nesse caso receba tudo como String ou Integer depois passe para o tipo que desejar!

mas o que voce precisa fazer exatamente? posso estar equivocado!

A

Eu não preciso de nada por enquanto, só estou estudando mesmo. Mas por exemplo, o método interno print do objeto System, pode receber qualquer tipo de dado, como isso é possível.

Schwingel

Utilizemos polimorfismo! Fica mais bonito. :wink:

O método print referido anteriormente utiliza o polimorfismo.

Imagine vários métodos com o mesmo nome variando entre eles o tipo de parâmetro que cada um pode receber.

A

Eu sei que fica, mas e quanto ao meu POST anterior?

Schwingel

Se quiseres, pode utilizar também como parâmetro do método o tipo Object, que é o pai de todos os tipo primitivos.

Ex:

public void teste(Object qualquerTipo){

                                // instanceof verifica se o objeto "qualquerTipo" é um "Integer"
		if(qualquerTipo instanceof Integer){

			Integer agoraInteger = Integer.parseInt(qualquerTipo.toString());

		}else if(qualquerTipo instanceof Float){

			Float agoraFloat = Float.parseFloat(qualquerTipo.toString());

		}
                                // e assim por diante...
	}

Mas prefira o polimorfismo, muito mais legível…

Andre_Brito

Na verdade, o System tem todos os métodos escritos pra isso. Se você mandar um inteiro, vai chamar o método que recebe um inteiro; se você mandar uma String, vai ter um método que recebe uma String e assim por diante. Também existe o parâmetro object, que vai ser chamado um toString do objeto passado (creio eu).

<blockquote>PrintStream.println()

PrintStream.println(boolean)

PrintStream.println(char)

PrintStream.println(char[])

PrintStream.println(double)

PrintStream.println(float)

PrintStream.println(int)

PrintStream.println(long)

PrintStream.println(java.lang.Object)

PrintStream.println(java.lang.String)</blockquote>

Se você mandar uma String, vai chamar o último. Se mandar um objeto de outro tipo (um objeto mesmo, e não um wrapper ou um tipo primitivo), ele vai chamar o método que recebe um Object.
A

Muito obrigado, vocês são os caras.

peczenyj

O que eu não entendi no código do Schwingel é, se qualquerTipo é instanceof tipoX tudo o que vc precisa fazer é um type casting.

if(var instanceof X){ X outra_var = (X) var; } ...

A

O que é type casting?

Criado 2 de junho de 2010
Ultima resposta 4 de jun. de 2010
Respostas 10
Participantes 6