我只是想在运行时以编程方式实现该行。
import com.company.package.*;
我不敢相信所有的搜索都会指向Python,而且我当然不希望加载类并一一循环。它一定是一个更快的命令。
有什么建议吗?
P.S:我知道这不是最好的设计,但我是通过 JSP 来实现的,所以也许有某种方法可以在声明中使用参数,如下所示
<%@ page import=%{myPackage} %>
最佳答案
类加载器太动态/灵活,无法满足您的要求。具体来说,没有可移植的方法来列出 ClassLoader 中的目录内容,因此无法确定要加载的完整类集。以下是两个不可移植建议:
- 假设您的 ClassLoader 实现 URLClassLoader,然后调用 getURLs,然后假设 URL 为
file:
...或者: - 假设 ClassLoader.getResource("com/company/package/") 将返回一个非空 URL,那么假设 URL 将为
file:
(或者jar:
,然后假设内部 URL 是file:
,然后提取并使用它)
无论哪种情况,都解析 file:
URL(处理URL解码),列出目录/JAR的内容查找所有*.class
文件。
注意,这基本上就是 Spring classpath*:
的内容确实如此,并且他们在 documentation 中包含了几个可移植性警告由于这些原因。
关于java - 以编程方式动态导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20140316/