Unsafe and JPMS
Alan Bateman
Alan.Bateman at oracle.com
Sat Jan 20 08:30:41 UTC 2018
On 20/01/2018 00:07, Jeremy Manson wrote:
> :
>
> The other place I saw that this came up is the cglib code generation
> library, which now uses Unsafe to access ClassLoader.defineClass (for
> any ClassLoader). This is useful for generating classes for
> dependency injection / mocking / that kind of thing. It is a
> violation of encapsulation, but it is done with a very specific
> software engineering goal in mind. It was never a terribly good
> approach, but it a library that is now depended upon by a very large
> amount of code in the wild.
>
DI and other cases with frameworks doing code injection should be
looking at Lookup.defineClass. Frameworks can use this API to inject a
class into an existing runtime package once they have a Lookup object
with the appropriate access. it's not all use-cases but it's the only
supported API in the platform for doing this kind of thing.
-Alan
More information about the jigsaw-dev
mailing list