我有以下问题:我想通过线路发送一个类型(java.lang.Class)并在另一侧'定义'类.
我试过这样的:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(MyClass.class);
Run Code Online (Sandbox Code Playgroud)
在接收端:
ByteArrayInputStream bis = new ByteArrayInputStream(request.getBytes());
ObjectInputStream ois = new ObjectInputStream(bis);
Class c = (Class) ois.readObject(); // ClassNotFoundException
Run Code Online (Sandbox Code Playgroud)
所以显然我需要发送类的原始字节码并做一个
ClassLoader.defineClass(bytes, ..
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我没有看到如何检索已加载类的bytcode.我正在寻找类似的东西:
byte[] byteCode = MyClass.class.toByteArray();
Run Code Online (Sandbox Code Playgroud)
这甚至可以使用标准JDK,还是有任何小型lib可以做到这一点?