问题标签 [reflections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3619 浏览

java - 你如何使用 ReflectionUtils 来获取包私有方法/字段?

我试图通过这样的反射获取包私有方法/字段:

但它是空的。有没有办法按包私有过滤?

0 投票
1 回答
1777 浏览

java - 如何扫描在运行时作为字节码加载的 java 类的特定注释?

  1. 如果一个 java 类在运行时作为字节码加载(例如通过 ASM 库或其他机制),它是否在 java 的类路径上?我没看到。
  2. 如果它不在java类路径上,如何扫描以这种方式加载的类的所有注释?

我使用谷歌反射和 3-rd 方库的自定义类加载器。

扫描类的工作原理如下:

MyAnnotation - 标记为@Retention(RetentionPolicy.RUNTIME)。以上(在一个类中)由JVM在运行时动态加载。

可以看出,在幕后,Reflections 尝试使用默认静态和上下文的 2 个类加载器来扫描所有 URL。

反射.scan()

更新:我找到了答案你能找到使用反射的包中的所有类吗?说“如果有生成的类或远程交付的类,您将无法发现这些类。” 但是,没有证据。可以请任何人提供更多细节并确认吗?

0 投票
1 回答
936 浏览

java - 谷歌对 Websphere 的反思 - 无法打开 url 连接

我有一个项目,我在其中使用 google Reflections 并将该项目部署在 websphere 自由配置文件上。

我的项目有以下代码,Transformer.class 位于依赖 jar 中

但是反射不起作用,出现以下错误:

0 投票
0 回答
81 浏览

java - 如何在 Jboss 应用程序中找到具有给定注解的所有方法?

我试图在 Jboss 应用程序中的一堆包中找到使用给定注释注释的所有方法。

这是一些代码:

当我在 jUnit 测试中运行它时,我得到了 32 个方法,而且一切都很顺利。然而,当我实际运行 Web 应用程序时,它发现的方法要少得多。也就是说,它错过了com.myCompany.stripes路径中的方法,并且我在日志中看到了许多错误。

例如

我在这里想念什么?关于如何解决这个问题的任何想法?

0 投票
6 回答
60303 浏览

java - 反思 - Java 8 - 无效的常量类型

我对Reflections库有疑问。我正在尝试动态加载所有实现特定接口的类。只要我不在这些类(java 8)中使用 lambda 表达式,一切正常(所有类都已加载)。我尝试升级lib版本但效果相同(java.io.IOException:无效常量类型:18)。

依赖和构建在 pom.xml

不排除是同样的效果。

代码:

如何使用 lambda 表达式加载类?

PS对不起英语:)

0 投票
0 回答
835 浏览

java - 使用反射 API 搜索带注释的类的问题

我很难使用反射 API 来查找在运行时使用自定义注释进行注释的类。最终目标是找到项目中使用我的自定义 @Job 注释进行注释的所有类,收集它们,并允许它们中的每一个从一个位置运行,而无需手动将它们添加到页面中。但是,我发现让初始搜索正常工作非常困难,因此我无法继续我的项目。

我目前的方法是使用:

其中“jobs”是包含我正在搜索的所有作业类的包,它将使用自定义 @Job 注释进行注释。“jobs”是我项目中的一个基本包,但我机器上的整体 url 看起来像“.../(project)/app/jobs”。此设置导致搜索一个 url,即“.../(project)/app/”,在配置对象中带有附加过滤器“+jobs.*”。这似乎工作正常,但显然有问题,因为我没有在集合中得到任何类。

如果重要,注释编码为:

注释类与我正在搜索的作业类位于相同的“作业”包中。包含注释的作业定义示例如下:

我找不到需要更改的内容才能使此搜索按预期运行。感谢您的帮助,如果我能进一步澄清任何事情,请告诉我。

编辑:我认为问题与 Play Framework 如何加载其类有关。幸运的是,框架提供了自己的注解搜索功能,我使用了它。根据评论,我在此处列出的代码将起作用,因为您拥有运行它的所有依赖项。随意使用它作为模板,让我知道它是否也适合你。

0 投票
2 回答
598 浏览

java - Java 反射 - 寻找具有特定注解及其注解元素的方法

假设我有这个注释类

那么有没有办法查看一个对象,使用 @MethodXY 注释“寻找”方法,其中它的元素 x = 3,y = 2,然后调用它?

这个问题已经在这里使用核心 Java 反射得到了回答。我想知道这是否可以使用Reflections 0.9.9-RC1 API来完成,而不必使用一些 for 循环代码或通过编写一些直接比较方法来迭代方法,在其中我可以使用给定参数作为键或其他东西来搜索方法。

0 投票
1 回答
560 浏览

java - 谷歌反射没有解决我在带注释的方法上的类型参数

如果项目在本地的类路径中并且我执行 getClass().getClassLoader(),我有以下代码可以很好地工作。但是,当我尝试从外部 jar 动态加载时,它会失败。

它无法加载 MyType,这是方法参数上的类型,如下所示:

此代码将失败,并显示“org.reflections.ReflectionsException:无法获取名称 MyType 的类型”:

我相信问题出在类加载器上。有没有另一种方法来加载一个罐子,这样它就可以拾取所有类型?

0 投票
4 回答
73 浏览

java - Java - 确定从对象的类中实例化对象的位置

假设我有一个名为 的类MyClass,在这个类中,我想找出实例化 的对象的类名,MyClass例如:

0 投票
3 回答
529 浏览

java - `Class .newInstance()` 抛出带有反射的 java.lang.StackOverflowError

代码:

BaseTab.java:

HomeTab.java:

当调用这个时,我得到:

仅供参考 BaseTab 正在扩展javafx选项卡。

我发现它正在迭代每个类并在出现错误之前创建数百个实例。问题是我的代码哪里出错了,我该如何解决?谢谢。