¿Cuál es el caso de uso para añadir paquetes no exportada / no abierto a una ModulePackages del módulo de información?

Rafael Winterhalter:

La JVM establece en el apartado 4.7.26 de que:

El atributo ModulePackages indica todos los paquetes de un módulo que se exportan o se abre por el atributo del módulo, así como todos los paquetes de las implementaciones de servicios registrados en el atributo del módulo. El atributo ModulePackages también puede indicar paquetes en el módulo que ni se exportan ni abrir ni contienen implementaciones de servicios.

¿Cuándo sería significativa para agregar un paquete tal cuando no se exporta o abierto? No puedo ver que el compilador de Java es cada vez agregando paquetes de esta manera.

Tropecé con esto, ya ASM también ofrece un ModuleVisitor::visitPackagemétodo .

Rafael Winterhalter:

Para responder a mis propias preguntas basadas en los comentarios de Alan Bateman:

La ModulePackagespropiedad es una optimización y opcional. Si el atributo está presente, la JVM puede hacerse con una lista de paquetes del módulo mediante la simple lectura de esta propiedad. Si esta propiedad no está presente, el archivo JAR debe ser escaneado lo que implica de E / S y por lo tanto no es deseable.

Si la lista de paquetes en incompleto, el tiempo de ejecución no podrá cargar las clases de estos paquetes como si esos paquetes no se incluyeron en el frasco.

El atributo se añade el frasco herramienta, pero no por javac .

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=182247&siteId=1
Recomendado
Clasificación