VAR-ARGS Convertendo e Ampliando uma Classe Wrapper

7 respostas
Marcio_Duran

VAR-ARGS Convertendo e Ampliando uma Classe Wrapper

:idea: Bom, é certo que o codigo falha, mas qual seria a melhor técnica para contornar o problema.

class JRuby{ String Rails(Short Ruby){return"Flex";} String Rails(Short...Ruby){return"MXLM";} class Grails public static void main(String []args){ System.out.println(new JRuby().Rails(7));

7 Respostas

Rafael_Nunes

Qualquer número literal em Java é considerado um inteiro(32bits).
Logo, você não pode chamar um método que espera um Short, passando um int.

E também vale lembrar que o método sem varargs tem precedência ao método com varargs.

Solução:

new JRuby().Rails((short)7) //isso retornaria 'Flex'

E para retornar ‘MXML’:

new JRuby().Rails(new Short()[7]) ou new JRuby().Rails(new Short((short)7), new Short((short)8));

LPJava
class JRuby{  
    String Rails(Short Ruby){return"Flex";}  
    String Rails(Short...Ruby){return"MXLM";}   
 class Grails   
    public static void main(String []args){  
short num = 10;

    System.out.println(new JRuby().Rails(num));
Marcio_Duran

E para retornar ‘MXML’ ? ´FLEX’

new JRuby().Rails(new Short()[7]) ou new JRuby().Rails(new Short((short)7), new Short((short)8));

:idea: Unboxing é o termo para criar tipos primitivos para representar o valor de um objeto

short J =JRails(7).shortValue(); :shock:

:thumbup: Classe Wrapper --------------------->Tipo Primitivo

Rafael_Nunes

Casting e Autoboxing são coisas distintas.
Não existe casting em autoboxing/unboxing.

Ps: E não existe :FLEX em Java, como os símbolos em Ruby. Mesmo enumerations não podem começar com ‘:’(dois pontos).

Marcio_Duran

Rafael Nunes:
Casting e Autoboxing são coisas distintas.
Não existe casting em autoboxing/unboxing.

Ps: E não existe :FLEX em Java, como os símbolos em Ruby. Mesmo enumerations não podem começar com ‘:’(dois pontos).

short j=Rails(7).shortValue(); :shock: Posssivel ?

Rafael_Nunes

Nope, impossível.
Rails() te retorna uma String, logo, como você vai chamar o método shortValue(). E o método Rails() espera um short, e o parâmetro que você está passando é um int.
E também o retorno do método Rails() é “Flex” ou “MXML”, logo, como você quer atribuir uma String para um primitivo?

Marcio_Duran

Rafael Nunes:
Nope, impossível.
Rails() te retorna uma String, logo, como você vai chamar o método shortValue(). E o método Rails() espera um short, e o parâmetro que você está passando é um int.
E também o retorno do método Rails() é “Flex” ou “MXML”, logo, como você quer atribuir uma String para um primitivo?

:wink: Correto, acho que estava pensando em algo toString(), deveria esta imaginado o conjunto e acabei saindo do foco mesmo do Metodos Wrapper…em especifico …

Criado 12 de março de 2008
Ultima resposta 12 de mar. de 2008
Respostas 7
Participantes 3