Jun*_* Oh 2 java reflection class instance .class-file
坦率地说,我甚至不知道它是否可能.但我想要做的就是下面.
从这里开始,我只是粘贴我的代码.
公共类Main {
private static final String CLASS_FILE_PATH =
"/Users/juneyoungoh/Downloads/ClassFile.class";
private static final String JAVA_FILE_PATH =
"/Users/juneyoungoh/Downloads/ClassFile.java";
private static Class getClassFromFile(File classFile) throws Exception {
System.out.println("get class from file : [" + classFile.getCanonicalPath() + " ]");
Object primativeClz = new Object();
ObjectInputStream ois = null;
ois = new ObjectInputStream(new FileInputStream(classFile));
primativeClz = ois.readObject();
ois.close();
return primativeClz.getClass();
}
public static void main(String[] args) throws Exception {
getClassInfo(getClassFromFile(new File(CLASS_FILE_PATH)));
}
Run Code Online (Sandbox Code Playgroud)
}
就像你的假设一样,这段代码有错误.例如,它显示:
java.io.StreamCurruptedException: invalid stream header : CAFEBABE
Run Code Online (Sandbox Code Playgroud)
有没有办法从.class文件或.java文件中获取对象实例?
PS我希望不要使用额外的库.
private static final String CLASS_FOLDER =
"/Users/juneyoungoh/Downloads/";
private static Class getClassFromFile(String fullClassName) throws Exception {
URLClassLoader loader = new URLClassLoader(new URL[] {
new URL("file://" + CLASS_FOLDER)
});
return loader.loadClass(fullClassName);
}
public static void main( String[] args ) throws Exception {
System.out.println((getClassFromFile("ClassFile"));
}
Run Code Online (Sandbox Code Playgroud)