JavaCompiler de JDK 1.6: ¿cómo escribir bytes de clase directamente en el byte [] array?

Así que recientemente me enteré de la nuevaAPI de JavaCompiler disponible en JDK 1.6. Esto hace que sea muy simple compilar unString a un.class archivo directamente desde el código de ejecución:

String className = "Foo";
String sourceCode = "...";

JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();

List<JavaSourceFromString> unitsToCompile = new ArrayList<JavaSourceFromString>() 
    {{ 
         add(new JavaSourceFromString(className, sourceCode)); 
    }};

StandardJavaFileManager fileManager = compiler.getStandardFileManager(null, null, null);
compiler.getTask(null, fileManager, null, null, null, unitsToCompile).call();
fileManager.close();    

ByteArrayOutputStream bos = new ByteArrayOutputStream();
FileInputStream fis = new FileInputStream(className + ".class");
IOUtils.copyStream(fis, bos);

return bos.toByteArray();

Puedes agarrar la fuente paraJavaSourceFromString desde elJavadoc.

Esto compilará muy fácilmentesourceCode aFoo.class en el directorio de trabajo actual.

Mi pregunta es: es posible compilar directamente a unbyte[] matriz, y evitar el desorden de tratar conFile ¿E / S en total?

Respuestas a la pregunta(3)

Su respuesta a la pregunta