使用反射从 .class 文件实例化 Java 类 [英] Using reflection to instantiate a Java class from a .class file

查看:64
本文介绍了使用反射从 .class 文件实例化 Java 类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个 .class 文件的路径,我想从正在运行的程序中实例化它.我必须加载"这个类,但它的类路径不在我的 .jar 或我的项目中,它在它旁边的文件夹中(不能使用 Class.forName()).我如何实例化这个 .class ?

I have a path to a .class file and i want to instantiate it from a running program. I have to "load" this class but its classpath isn't in my .jar or my project, it is in a folder besides it (can't use Class.forName()). How can i instantiate this .class ?

推荐答案

您可以进行下一步:

File myFolder = new File("myfolder");
URLClassLoader classLoader = new URLClassLoader(new URL[]{myFolder.toURI().toURL()}, Thread.currentThread().getContextClassLoader());
Class<?> myClass = Class.forName("my.package.Myclass", true, classLoader);
Myclass obj = (Myclass)myClass.newInstance();

首先使用上下文 Classloader 作为父级创建 URLClassLoader 的实例,然后使用这个新的 ClassLoader 加载类,最后你创建一个实例(这里它调用一个没有参数的构造函数).

First you create an instance of URLClassLoader using the context Classloader as parent, then you load the class using this new ClassLoader and finally you create an instance (here it calls a constructor with no arguments).

这篇关于使用反射从 .class 文件实例化 Java 类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆