java - 在 Java10 中用什么代替 `defineClass`?

标签 java reflection java-10

我使用 ClassLoader 中的方法 defineClass() 从字节数组中定义一个类。我使用反射获取此方法:

ClassLoader.class.getDeclaredMethod(
    "defineClass", String.class, byte[].class, int.class, int.class);

Java10 提示 defineClass 的反射使用。

我应该改用什么?

最佳答案

MethodHandles.Lookup.defineClass似乎是幸运的替代品。但是请注意,您定义的类必须与查找的查找类位于同一运行时包中。您将无法在其他模块中存在的包中创建类,这是以前的方法所没有的限制。根据您的用例,这些问题可能会出现,也可能不会出现。

后续阅读,Rafael Winterhalter has blogged about他与 Byte Buddy 合作时的新限制。如果您的技术足以理解围绕任意运行时类定义的问题,您可能会对它感兴趣。

关于java - 在 Java10 中用什么代替 `defineClass`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50471466/

相关文章:

javascript - TypeScript 不提供函数名称

Maven-bundle-plugin: osgi.ee=UNKNOWN

Java 10 : Replacement for java. xml.ws 冲突

java - Maven 重新导入设置语言级别

java - 使用 ArrayList 中的名称创建文件

java - 没有互联网连接时应用程序崩溃

java - 是否可以使用 JpaRepository<T, I> 在 jsp 中分页

java - 调用方法时参数数量错误

c# - 为什么 GetProperties 两次列出 protected 属性(在通用基类中声明)?

java - java-10 中的 XXXSummaryStatistics 新构造函数