private static <T> Class<? extends T> createReflectorClass( Class<T> iClass, Class<?> targetClass) { String reflectorClassName = iClass.getName() + "$$Reflector" + COUNTER.getAndIncrement(); byte[] bytecode = getBytecode(iClass, targetClass, reflectorClassName); if (DEBUG) { File file = new File("/tmp", reflectorClassName + ".class"); System.out.println("Generated reflector: " + file.getAbsolutePath()); try (OutputStream out = new FileOutputStream(file)) { out.write(bytecode); } catch (IOException e) { throw new RuntimeException(e); } } final Class<?> proxyClass; proxyClass = defineViaUnsafe(iClass, reflectorClassName, bytecode); // proxyClass = defineViaNewClassLoader(iClass, reflectorClassName, bytecode); return proxyClass.asSubclass(iClass); }
private static <T> Class<? extends T> createReflectorClass( Class<T> iClass, Class<?> targetClass) { String reflectorClassName = iClass.getName() + "$$Reflector" + COUNTER.getAndIncrement(); byte[] bytecode = getBytecode(iClass, targetClass, reflectorClassName); if (DEBUG) { File file = new File("/tmp", reflectorClassName + ".class"); System.out.println("Generated reflector: " + file.getAbsolutePath()); try (OutputStream out = new FileOutputStream(file)) { out.write(bytecode); } catch (IOException e) { throw new RuntimeException(e); } } final Class<?> proxyClass; proxyClass = defineViaUnsafe(iClass, reflectorClassName, bytecode); // proxyClass = defineViaNewClassLoader(iClass, reflectorClassName, bytecode); return proxyClass.asSubclass(iClass); }