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?
Passar valor mixto para parâmetro de função
10 Respostas
Em que vc irá usar algum método assim?
Podemos pensar em outra solução.
Uma variável nasce e morre do mesmo tipo.
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!
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.
Utilizemos polimorfismo! Fica mais bonito. 
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.
Eu sei que fica, mas e quanto ao meu POST anterior?
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…
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.
Muito obrigado, vocês são os caras.
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;
} ...
O que é type casting?