Não compila na linha 10, pq não tem nenhum construtor que receba int. É isso?
eu tb concordo procurei e nao vi nenhum construtor com int… o codigo nao compila!! nesse caso seria letra D ou letra E, pois nao olhei todo o codigo… entao a letra E tb pode ser verdadeira… hehe!
Mas tem um que recebe um Object. O erro real é da linha 20 na classe interna faltando o ;
Mas um tipo primitivo vai se encaixar num Object?
Quanto à linha 20 vc tem razão, eu não prestei atenção.
Etnão pra mim a resposta é e)Contêm varios erros
[quote=bruceramone]Mas um tipo primitivo vai se encaixar num Object?
Quanto à linha 20 vc tem razão, eu não prestei atenção.
Etnão pra mim a resposta é e)Contêm varios erros [/quote]
Faz assim então. Compila pa vc verificar se tem mais de um? Caso vc corriga esse erro q te falei vc vai ver a exceção rolando.
Object != int sao tipos diferentes…
E isso faz maior diferença na assinatura…
class Dif{
static void metd(Object a){
System.out.println("object");
}
public static void main(String[]a){
metd(10);
}
me diz o resultado…
Object… isso LPJava
A desculpa realmente um int não pode receber um Object. Caso não lançase a exceção a saída seria C. Realmente eu concordo até pq não é possivel fazer converter para Integer e depois passar para Object. Mas a verdade é que o código compila sim. Comente as linhas 19 e 20 então verá o real resultado.
É teu código ta compilando e ta imprimindo OBJECT. Isso quer dizer tbm que falei bobagem na minha tentativa de explicação anterior. :shock:
Aqui não compila de jeito nenhum, nem o código do LPJava.
Estamos ficando doidos? :lol:
[quote=bruceramone]Aqui não compila de jeito nenhum, nem o código do LPJava.
Estamos ficando doidos? :lol:[/quote]
Ta usando java 1.5?
Compila sim.
Na teoria o compilador faz autobox de int pra Integer, sendo assim temos um metodo que recebe um Object, como quase todas as classes extendem object funciona.
Tanto é que se você colocar assim:
static void metd(Number a){
System.out.println("Number ");
}
A chamada sera pra Namber pois Number é um nivel mais baixo de hierarquia, comparado com Object.
Tô usando o Java 1.4, é isso.
[quote=bruceramone]Aqui não compila de jeito nenhum, nem o código do LPJava.
Estamos ficando doidos? :lol:[/quote]
se compilasse estariamos ficando doido heheheh !! ainda bem que nao compila…
vc entendeu o intuito do meu codigo…?
[quote=LPJava][quote=bruceramone]Aqui não compila de jeito nenhum, nem o código do LPJava.
Estamos ficando doidos? :lol:[/quote]
se compilasse estariamos ficando doido heheheh !! ainda bem que nao compila…
vc entendeu o intuito do meu codigo…?[/quote]
Eu não entendi, estamos falando de autobox, autobox somente java 1.5 e acima.
[quote=vanzella][quote=LPJava][quote=bruceramone]Aqui não compila de jeito nenhum, nem o código do LPJava.
Estamos ficando doidos? :lol:[/quote]
se compilasse estariamos ficando doido heheheh !! ainda bem que nao compila…
vc entendeu o intuito do meu codigo…?[/quote]
Eu não entendi, estamos falando de autobox, autobox somente java 1.5 e acima.[/quote]
o intituito do meu codigo foi provar que o autobox nao funciona… de int para Object… e tinha um erro naquele codigo onde o construtor… chama Teste2(10) sendo q nao existe um construtor com essa assinatura…
Tudo bem não existe autobox diretamente de int pra Object, mas o codigo compila sem erros, o compilador faz autobox de int para Integer e depois a conversão de tipos, como Integer extende Object, funciona.
[quote=vanzella][quote=LPJava]
o intituito do meu codigo foi provar que o autobox nao funciona… de int para Object… e tinha um erro naquele codigo onde o construtor… chama Teste2(10) sendo q nao existe um construtor com essa assinatura…
[/quote]
Tudo bem não existe autobox diretamente de int pra Object, mas o codigo compila sem erros, o compilador faz autobox de int para Integer e depois a conversão de tipos, como Integer extende Object, funciona.[/quote]
isso que quis dizer diretamente nao n dar para fazer de int para Object… porem eu posso fazer o q vc falou
[quote=LPJava]
isso que quis dizer diretamente nao n dar para fazer de int para Object… porem eu posso fazer o q vc falou :D[/quote]
Mas então compila? rsrs.
Abraço…
Cara olha só o que eu acho.
Object é a superclasse de todas. Number extende de Object e Integer, Double, Float, String, Char, Long, Short são todas irmas.
Vc pode converter para um pai que no mas não da para converter para um irmão na hierarquia. Axo que esse é o grande motivo para se conseguir converter para um Number e um Object sem dar erro de compilação. Mas não da pra converter um Integer para um Long nem um Duble para um Float mas para um Number ou Object da sim.
[quote=anderson.bonavides]Cara olha só o que eu acho.
Object é a superclasse de todas. Number extende de Object e Integer, Double, Float, String, Char, Long, Short são todas irmas.
Vc pode converter para um pai que no mas não da para converter para um irmão na hierarquia. Axo que esse é o grande motivo para se conseguir converter para um Number e um Object sem dar erro de compilação. Mas não da pra converter um Integer para um Long nem um Duble para um Float mas para um Number ou Object da sim.
[/quote]
É isso ai velho, conversão das irmas :lol: , somente se forem primitivos, tipo short pra int, float pra double …