Oracle traz getCallerClass de volta no Java 7
Decisão foi divulgada por Mark Reinhold, arquiteto-chefe da plataforma Java na Oracle, no Twitter.
No início de julho, a Oracle↳Oracle22 conteúdosOracle lança Java 26 para aumentar produtividade de desenvolvedoresDev (Back & Front) · mar 2026Oracle oferece o primeiro cluster de computação em nuvem em escala ZettaDevSecOps · jan 2025Oracle abre inscrições para o ONE, programa gratuito de formação em tecnologia e inteligência artificialData · dez 2024Ver tudo em Data → anunciou que o método sun.reflect.Reflection.getCallerClass() seria descontinuado. Entretanto, a empresa reverteu a decisão recentemente, como indicado no tweet do arquiteto-chefe da plataforma Java↳Java42 conteúdosNovidades do Java 26 (para desenvolvedores)Dev (Back & Front) · mar 2026Visual Studio Code para Java: o guia completo (dicas, configuração e extensões)Dev (Back & Front) · out 2025Quarkus: Modernizando a linguagem Java para a era da nuvemDev (Back & Front) · nov 2020Ver tudo em Dev (Back & Front) → na Oracle, Mark Reinhold (com menção a Cedric Champeu e Guillaume Laforge):
Vamos reincluir o getCallerClass(int) no 7u40. O destino desse método no 8 ainda será decidido.
Cédric Champeau retuitou Reinhold com o seguinte comentário:
Boas notícias: o pessoal do JDK decidiu reverter o comportamento do getCallerClass no 1.7u40 e 1.8. O Groovy e sistemas de logging não serão quebrados.
Champeau é o principal committer da linguagem Groovy, e Laforge é líder de Desenvolvimento Groovy na SpringSource (mantenedora do Groovy).
O método sun.reflect.Reflection.getCallerClass() funciona retornando à instância da classe do método certo número de frames acima na pilha de chamadas (call stack), sendo que a própria classe Reflect representa a posição zero. Já o método getCallerClass() oferece um mecanismo para determinar a classe do chamador, possibilitando implementar comportamentos “sensíveis ao chamador”. Com isso, aplicações podem variar seu comportamento segundo a classe chamadora, ou classes acima na pilha de chamadas.
Segundo a Oracle, chamadas como getCallerClass() e muitas outras no pacote sun.* podem se mostrar frágeis e inconsistentes, por razões descritas em seu artigo “Por que desenvolvedores não devem escrever programas que chamam o pacote ‘sun'”. A notícia da alteração para deprecated estava sendo acompanhada no issue tracker da OTN.
Cédric Champeau alertou antecipadamente para a mudança do método para deprecated, pois o Groovy depende desse método. O Grails também é impactado, e sua equipe informou um bug relacionado em seu issue tracker.
O problema ia além: utilizando-se ferramentas de pesquisa de código-fonte público, encontram-se dependências para o getCallerClass() em vários projetos, incluindo alguns da própria Oracle, como o Jigsaw e o Lambda, e outros projetos de terceiros, como o IntelliJ IDEA.
Com informações de InfoQ







