小编Ano*_*ous的帖子

如何在ModuleBuilder中定义全局字段

我正在使用动态程序集System.Reflection.Emit,我想定义一个模块级字段,可以检索的类型Module.GetField.有方法ModuleBuilder来定义全局的方法,但我能找到的唯一的东西看起来像一个" DefineGlobalField法"是DefineInitializedDataDefineUninitializedData,但对于这些我指定大小(或初始值,从它的大小可以推断),而不是一个类型.我怎样才能做到这一点?

c# reflection.emit

8
推荐指数
1
解决办法
145
查看次数

如何在运行时扩展模块路径

我喜欢服务。我也喜欢模块系统。对我来说不幸的是,在我使用 Java 9 之前,我养成了从运行时通过 jar 加载的 jar 获取服务提供者的习惯URLClassLoader,就像这样(var为了简洁,我将使用 Java 10 ):

var url = new File("myjar.jar").toURI().toURL();
var cl = new URLClassLoader(new URL[] {url}, getClass().getClassLoader());
var services = ServiceLoader.load(MyService.class, cl);
for (var service : services) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

即使在 Java 9 及更高版本中,这也能正常工作,但它会将 jar 加载到类路径上,这意味着它使用旧META-INF\services方法来查找服务提供者。我宁愿使用该module-info方法,但这需要将 jar 加载到模块路径上,但我找不到任何方法来执行此操作。所以我在这里,希望这里的某个更彻底地了解模块系统的人会告诉我如何做到这一点(或者它不能,如果是这样的话)。

java java-9 java-module module-info

6
推荐指数
1
解决办法
503
查看次数

删除 x 与 ::operator delete(x)

delete x;和 和有什么区别::operator delete(x);?我知道它们是不同的,但我无法弄清楚它们的区别是什么。我的具体用例是,我有一个必须使用::operator new(size_t)放置 new 运算符进行分配并随后进行初始化的对象。但是,我真的希望能够使用delete x;而不是释放它::operator delete(x);,所以我想知道这两种方法(没有双关语)何时可能做不同的事情,这样我就可以知道何时(如果有)可以安全使用它们可以互换。

c++

1
推荐指数
1
解决办法
284
查看次数

标签 统计

c# ×1

c++ ×1

java ×1

java-9 ×1

java-module ×1

module-info ×1

reflection.emit ×1