java - 如何使用Java反射设置接口(interface)字段

标签 java reflection jboss jboss7.x

我正在使用 Jboss 7.1.1.final,并且我有一个大量使用 JMS 的应用程序。在进行一些性能测试后,我发现每当我达到一定数量的消息时,应用程序就会开始失败,因为没有足够的队列 session 。

经过一些研究,我发现这个 JMS 属性仅在 jboss 版本 7.1.2 中公开(请参阅 here )。

由于法律原因,我当前无法使用此版本(或修复它的特定版本),更改它的唯一其他方法是使用反射。所以我下载了Jboss源代码并开始使用它,现在我有几个问题:

首先,我发现我需要的类是org.jboss.as.messaging.CommonAttributes,它实际上是一个接口(interface),它有这一行:

 SimpleAttributeDefinition CONNECTION_THREAD_POOL_MAX_SIZE = new SimpleAttributeDefinition("thread-pool-max-size",
        new ModelNode().set(HornetQClient.DEFAULT_THREAD_POOL_MAX_SIZE), ModelType.INT,  true, MeasurementUnit.NONE);
  1. ClassLoader.getSystemClassLoader() 会给我加载类所需的类加载器吗?
  2. 如何使用反射设置接口(interface)字段值? (Field.set() 方法需要一个对象实例,因为它是一个接口(interface),我无法实例化它)

最佳答案

您正在谈论this一段代码。我一定让你失望了:接口(interface)根本没有字段。它们只有方法声明,没有实现。

您所看到的实际上是在接口(interface)主体中定义的public static final(所有这些关键字对于接口(interface)内的“字段”都是隐式的)常量。但该接口(interface)仅用作它们的命名空间,它们不是真正的字段。实现此类接口(interface)的类不会继承这些字段并拥有自己的变量副本。它们只是常数。

话虽这么说 - 你不能做任何事情,至少在这个界面上是这样。

关于java - 如何使用Java反射设置接口(interface)字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11070744/

相关文章:

java - 发布表单时来自tomcat的意外结果

java - 只要 editText 变空,SPAN_EXCLUSIVE_EXCLUSIVE 跨度就不能有零长度错误

java - 我可以在 Java 中的 ArrayList<T> 实例上使用类字段吗?

.net - 什么是 System.Reflection.Module?

java - 实现 toString() 时使用反射有意义吗?

web-services - SOAP 和 REST Web 服务在 Java EE 中具有一种实现

jboss 服务器根文件夹

java - future 超时是否会终止线程执行

java - Android ActionBar - 项目图标不断变化?

eclipse - 如何在 Eclipse 中运行/调试 Java Web 服务项目