/ / O que é uma ScalaSignature? - java, scala, scalac, scala-compilador

O que é uma ScalaSignature? - java, scala, scalac, scala-compilador

Ao descompilar arquivos Scala para código Java, geralmente encontramos classes anotadas com o ScalaSignatures. Eles parecem ter apenas um valor de anotação, uma String um pouco codificada. Por que o Compilador Scala cria uma construção tão estranha, em vez de usar o costume Attributes no class Arquivo?

Respostas:

4 para resposta № 1

A partir de Armazenamento de assinaturas Scala em conserva em arquivos de classe:

o legado método para armazenar assinaturas Comoatributos é simultaneamente mais elegante, mais compacto (cerca de 15%) e mais simples do que usando anotações. No entanto, para acessar a assinatura em conserva em atributos requer obtendo e analisando a arquivo de classe inteiro. Como as anotações são reconhecidas pela JVM, o novo método permite recuperar em conserva assinatura bytes diretamente de dentro um programa Scala em execução usando reflexão de Java.

O novo método é parte de um desenvolvimento contínuoescrever uma Boa Scala reflexão biblioteca. Reflexão Java Visualizações Scala programas em uma maneira simplificada centrada em Java. Para dar uma Na visão centrada em Scala do programa refletido, as informações fornecidas pela reflexão Java devem ser completado com informações encontradas em Assinaturas Scala. o legado método de armazenamento teria exigido todos arquivos de classe a serem analisados novamente - a JVM já os analisou e expõe a maior parte do conteúdo por meio de reflexão. O novo armazenamento método permite acessando assinaturas Scala em conserva da mesma maneira que outras informações refletivas. obtido, tornando a nova biblioteca de reflexão Scala mais simples e rápida.

Embora a biblioteca de reflexão Scala não sejaparte da versão 2.8, é desejável aquele existir Os arquivos da classe 2.8 são compatíveis com a nova biblioteca de reflexão quando ela se torna acessível. Além disso, como os arquivos da classe 2.8 são incompatíveis com os do 2.7 em qualquer caso, mudando o método de armazenamento assinaturas in 2.8 não exigirá outro binário-incompatível formato de arquivo de classe mudança Um pouco depois.