[jsr294-modularity-eg] Static compilation
Michal Cierniak
cierniak at google.com
Wed May 2 12:52:32 EDT 2007
On 5/2/07, Glyn Normington <glyn_normington at uk.ibm.com> wrote:
> "Michal Cierniak" <cierniak at google.com> wrote on 01/05/2007 18:33:07:
>
> > We haven't talked about such details but my
> > assumption was that it should be possible to dynamically load a class
> > that extends any non-final class including those classes that are not
> > exported.
>
> My expectation is different, as you may have guessed.
Glyn,
I think that your expectation is completely reasonable but I think
that we would need more mechanisms to enforce this problem because the
JSR-277 APIs as presented in the EDR allow you to arrive at the
problem described by me. Here's some pseudocode that shows my
scenario (it's pseudo in the sense that I didn't look up carefully the
APIs or tried to compile it, so that are probably some typos there):
class A {
// class is in a module M and is not exported
public void F() {
ClassLoader cl = A.class.getClassLoader(); // M's classloader
byte[] b = getBytes(); // bytes defining a class that subclasses A
Class b = cl.defineClass("B", b, 0, b.length);
}
byte[] getBytes() { ...}
}
In this example, I use A's classloader to create class B which is a
subclass of A.
Dealing with classloaders is always tricky, so I may be missing
something here. What do you think about my example?
Michal
More information about the jsr294-modularity-eg
mailing list