Java 反射:如何检索匿名内部类?

发布于 2024-08-09 08:04:43 字数 309 浏览 7 评论 0原文

我在另一个类中有一个匿名内部类(SomeClass)。

SomeClass.class.getClasses()SomeClass.class.getDeclaredClasses() 都返回空数组。

我在Class' Javadocs 中找不到关于此的一些提示。

可以通过某种方式使用反射来检索匿名内部类吗?

匿名内部类和普通内部类之间还有哪些显着差异?

I have an anonymous inner class inside another class (SomeClass).

Both SomeClass.class.getClasses() and SomeClass.class.getDeclaredClasses() return empty arrays.

I couldn't find some hints on this in Class' Javadocs.

Can anonymous inner classes be retrieved using reflection in some way?

What else are notable differences between anonymous inner classes and normal inner classes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

清风无影 2024-08-16 08:04:43

您可以尝试对 Class$1 ... Class$n 进行强力搜索,直到找不到更多为止。

You could try a brute force search of Class$1 ... Class$n until you can't find any more.

往昔成烟 2024-08-16 08:04:43

如果它使用反射,这可能是一个非常糟糕的主意。抛开这一点,我相信您可以在运行时添加额外的内部类,因此列出可能尚未想到的类是没有意义的。我想,列出当前加载的类需要通过 Java 代理或类似代理。

匿名内部类由名称、封闭方法和附加合成字段组成,用于复制已复制的外部局部变量。一个类在运行时与另一个类几乎相同。请记住,1.1 引入了内部类,但自 1.0 以来类文件几乎没有变化。

If it's using reflection, it's probably a really bad idea. Leaving that aside, I believe you can additional inner classes at runtime, so it doesn't make sense to list classes that may not have been thought of yet. Listing currently loaded classes would, I guess, require going through Java agents or similar.

Anonymous inner classes have made up names, an enclosing method and additional synthetic fields for copying external local variables that have been copied. One class is pretty much the same as another at runtime. Remember that 1.1 introduced inner classes, but class files have barely changed since 1.0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文