我正在开发一个应用程序,该应用程序托管作为 Java 类文件提供的用户定义的存储过程。这些过程需要是确定性的,我想将作为非确定性来源的各种包和方法列入黑名单。我查看了 java.lang.Class 和 javax.tools.* 中可用的内容。
看起来我可以使用 java.lang.Class 审核成员、方法参数和返回类型。但是,要审核方法内容,我似乎必须分析原始类文件。
还有一些极端情况,例如我需要审核的静态初始化 block 和成员变量初始化。在某些情况下,例如 java.util.Date,默认构造函数是不确定的,但其他情况都很好。
是否有一个框架或工具可以使分析类文件的这些方面变得容易?
最佳答案
是的,有。正如您所说的“分析这些方面”,例如AspectJ ;) 例如,您可以将加载时编织与 javaagent 结合使用。另一种方法是使用aspectj类加载器加载用户的类。 您可以声明寻找给定方法调用的切入点。您还可以封装用户方法并计算执行时间等。
关于java - 如何审核用户提供的类文件以将包、类和方法列入黑名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6800977/