Dúvida sobre o Objeto Integer

Por favor alguém poderia me explicar porque na linha abaixo, embora a variável seja do tipo Integer aceitou uma atribuição como se fosse int. Porque isso aconteceu, não deveria retornar algum erro. Essa classe tem algum construtor especial?

private static final Integer col=3;

Obrigado.

Isso eh o autoboxing do Java 5. O que o compilador ta fazendo pra vc eh soh te deixar nao digitar o new Integer(x);, mas ele continua la.

Quando comecei a aprender C++ tive um pouco (“um pouco” é modo de dizer) de dificuldade com as coisas que o compilador fazia automaticamente por mim, eu que estava acostumado com o Pascal e o C.
O que era mais complicado eram as regras de construtores automáticos. Depois de algum tempo, comecei a entender o que o compilador fazia automaticamente por mim (obviamente vi muitas listagens do assembly gerado pelo compilador, só para ter certeza do que estava acontecendo).
O problema é que o C++ faz coisas automáticas e “inesperadas” demais.
(É diferente de quando você tem uma linguagem como o SQL, que é de nível muito mais alto, mas não faz coisas tão “inesperadas” assim.)
Agora Java está começando a pegar essa “doença” do C++. Esse tipo de conversão automática (autoboxing) é simples e prática, e não é exatamente inesperada, mas abre o caminho para coisas “inesperadas”. É por isso que não aceitaram o “overloading” de operadores em Java: isso iria pavimentar o caminho para muitas coisas extremamente estranhas.

Valeu pessoal…