有没有办法实例化匿名内部类中定义的类?

2023-12-11

我随机编写代码并遇到一个问题:如何实例化在匿名内部类中定义的类 E(如下所示);喜欢:

 A c = new A() {
   class E{ //Statements
     }
 };

您无法编写使用普通调用的程序new为此:为了实例化一个类,它必须有一个name。正如该术语所暗示的那样,匿名内部类确实not有名字。

因此,存在于该匿名内部类中的类也没有名称;因此它不能被实例化outside那个匿名内部类的。

But您可以使用反射。请参阅我的 Test.java:

import java.util.*;
import java.lang.reflect.*;

class B { 
  B() { System.out.println("B"); }
  void foo() { System.out.println("B.foo"); }
}

public class Test{
  B b;
  void bar() {
    b = new B() {
          class C { C() { System.out.println("inner C"); } }
          void foo() { System.out.println("inner foo"); }
    };
    b.foo();
}
public static void main(String[] args) throws Exception {
    Test test = new Test();
    test.bar();

    Class<?> enclosingClass = Class.forName("Test$1");
    Class<?> innerClass = Class.forName("Test$1$C");

    Constructor<?> ctor = innerClass.getDeclaredConstructor(enclosingClass);
    Object innerInstance = ctor.newInstance(test.b);
  }
}

这打印:

B
inner foo
inner C

所以,是的,考虑到我们可以使用mangled班级名称Test$1$C在运行时,并且该反射也允许我们在运行时实例化对象(参见here详情),最终答案是:是的,是的possible.

但仅供记录:这并不意味着人们应该在实际代码中做这样的事情。这是一个很好的小拼图,可以训练创造力;但不适合现实世界中的任何事情。

在现实世界中,匿名内部类中的内部类是一个设计错误。故事结局。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法实例化匿名内部类中定义的类? 的相关文章

  • OSGi:将参数传递给特定包

    我有一个带有自定义 Main 类的自定义 jar 它启动 OSGi 框架并安装 启动捆绑包 这个主 jar 还包括一个属性文件 目标 我有一个包 A 它应该以某种方式获取主 jar 的该属性文件的属性 我的第一次尝试是在捆绑包 A 中定义一
  • JPA 实体中的方法是否允许抛出异常?

    我尝试创建的 Entity 有问题 当尝试使用 OpenJPA 实现在 Eclipse 中测试类时出现问题 我有not尝试过其他人 所以不确定它是否适用于他们 我的测试用例非常简单 因为它创建一个 EntityManagerFactory
  • Windows 上的虚假唤醒。是否可以?

    我最近学习了 虚假唤醒 有人说这个问题只可能发生在某些类型的 Linux PC 上 我用的是窗户 我为虚假唤醒编写了测试 我得到的结果是这是可能的 但我想向您展示这个测试 也许我在某个地方犯了错误 我的初始变体 import java ut
  • 定制法国号码格式

    我尝试为美国国家 地区使用自定义数字格式 到目前为止效果很好 Not something I want NumberFormat numberFormat0 NumberFormat getNumberInstance Locale US
  • Android 上的 setTimeOut() 相当于什么?

    我需要等效的代码setTimeOut call function milliseconds 对于安卓 setTimeOut call function milliseconds 您可能想查看定时任务 http developer andro
  • 如何检测线程是否被IO阻塞?

    在Java中 线程可以有不同的状态 新的 可运行的 阻塞的 等待的 TIMED WAITING 的 终止的 然而 当线程被IO阻塞时 其状态为 RUNNABLE 如何判断是否被IO阻塞 NEW 线程已创建但尚未处理 可运行 线程正在占用CP
  • 如何使用 log4j 自动记录类中调用的每个方法

    我有一个包含数据库调用的类 我通常希望使用 log4j 记录该类中调用的每个方法 带参数 logger debug foo id id initiated 可以自动执行此操作吗 也许通过在每个方法的开头使用某种注释而不是编写每个 logge
  • JTable AutoCreateRowSorter 将数字排序为字符串

    我有一个 JTable JTable table new JTable String colNames c1 DefaultTableModel model new DefaultTableModel Integer x new Integ
  • 仅使用 ServletContext 查找应用程序的 URL

    我正在使用 Spring MVC 编写一个 Java Web 应用程序 我有一个后台进程 它会遍历数据库并查找必须通过电子邮件发送给我的用户的通知 这些电子邮件需要包含应用程序的超链接 对于网络应用程序来说 这似乎是相当常见的模式 但我遇到
  • 在 Java 和 PHP 之间加密/解密字符串

    我使用 AES 加密来加密和解密服务器端的 php 和 Android 应用程序 作为客户端 之间的字符串 PHP 中的加密字符串为 HaxRKnMxT24kCJWUXaVvqDHahzurJQK sYA4lIHql U 在 Java 中是
  • 从外部 clojar 导入/使用资源

    我想做的是将一个大文件 MIDI 声音字体 打包到一个独立的 Maven repo clojar 中 然后能够以编程方式将其拉下来并从单独的项目中使用它 事实证明 这个看似简单的任务比我想象的要复杂 理想的情况是 如果有一种方法可以直接访问
  • 如何对JConsole的密码文件的密码进行加密

    我正在使用 JConsole 访问我的应用程序 MBean 并使用 password properties 文件 但根据 Sun 的规范 该文件仅包含明文格式的密码 com sun management jmxremote password
  • Java反序列化中避免重复对象

    我有两个列表 list1 和 list2 其中包含对某些对象的引用 其中某些列表条目可能指向同一对象 然后 由于各种原因 我将这些列表序列化为两个单独的文件 最后 当我反序列化列表时 我想确保我不会重新创建超出需要的对象 换句话说 List
  • 如何迭代SparseArray?

    有没有办法迭代 Java SparseArray 适用于 Android 我用了sparsearray通过索引轻松获取值 我找不到 看来我找到了解决方案 我没有正确注意到keyAt index 功能 所以我会这样做 for int i 0
  • Google OR-Tools:无法运行 java 示例,java.lang.UnsatisfiedLinkError:java.library.path 中没有 jniortools

    我是java新手 我想尝试google or tools来解决车辆路由问题 只是尝试运行 java 示例here https developers google com optimization introduction run progr
  • 仅在java中使用数组计算50的阶乘

    我是java的初学者 我有一个作业要编写一个完整的程序 使用数组计算 50 的阶乘 我无法使用像 biginteger 这样的任何方法 我只能使用数组 因为我的教授希望我们理解背后的逻辑 我猜 然而 他并没有真正教我们数组的细节 所以我在这
  • 用于将字符串与通配符模式进行匹配的递归函数

    所以我一整天都在试图解决这个作业 只是无法完成 以下函数接受 2 个字符串 第二个 不是第一个 可能包含 的 星号 An 是字符串的替换 空 1个字符或更多 它可以出现 仅在s2中 一次 两次 更多或根本不出现 它不能与另一个相邻 ab c
  • 如何使用自定义转换器访问 jOOQ 生成的例程字段作为值?

    我在访问生成例程的字段时遇到问题PL pgSQL 用户定义函数 返回JSON 数据类型结果 已经提到this https stackoverflow com q 62535195 6805866问题 这是我的结果get all orders
  • Spring Data JPA 和 Exists 查询

    我正在使用 Spring Data JPA 使用 Hibernate 作为我的 JPA 提供程序 并想要定义一个exists附加 HQL 查询的方法 public interface MyEntityRepository extends C
  • 如何在 SpringDoc OpenAPI 3 中引用文件?

    我有 Spring Boot 项目 我想在其中记录我的 API 这里是正在处理的 Web 服务的示例 ApiResponses value ApiResponse responseCode 200 content Content media

随机推荐

  • Android Manifest.xml 中接收短信

    我尝试在我的应用程序中接收短信 我认为问题出在我的 AndroidManifest xml 文件中
  • 如何更改 Python 安装的 tk 版本?

    我刚刚使用删除了旧的 Python 框架这个程序 并且我已经为我的架构安装了 Python 3 4 3 这似乎是i386根据以下命令uname p 所以我下载并安装了以下版本Mac OS X 32 bit i386 PPC installe
  • char* 和 char arr[] 区别 - C++/C [重复]

    这个问题在这里已经有答案了 刚开始接触 C 我想知道是否有人可以解释一些事情 我相信你可以通过以下方式初始化 char 数组 char arr Hello 这将创建一个包含值的 Char 数组 H e l l o 0 但如果我确实创建了这个
  • 如何多次做到这个长度≤1?

    我花了一天时间读完第166页length 1在书里小阴谋家 有以下代码 lambda mk length mk length mk length lambda mk length lambda l cond null l 0 else ad
  • SQL 根据总数选择每第 n 行

    我有一个包含 GPS 数据的表 lat lon timestamp 我的查询通过时间戳窗口选择 SELECT FROM gps WHERE timesamp gt 2016 12 12T02 00 00Z AND timestamp lt
  • Selenium webdriver.Remote 驱动程序不能与 tor 代理一起使用(webdriver.Chrome 可以)

    我正在尝试在我的设备上使用socks5代理远程驱动程序作为 docker 容器托管在端口 4444 上 这是代码示例 from selenium import webdriver opts webdriver ChromeOptions o
  • Nuget 和第三方 dll

    我对如何将第三方 dll 打包到 NuGet 包中感到困惑 我从我的 csproj 创建了一个 nuspec 文件 这个包是csproj的输出dll 没有问题 然后我添加一个元素并添加我的 2 个第三方 dll 这可以工作并将 dll 打包
  • 如何使用 R 从 SQL 数据库中检索很长的 XML 字符串?

    我有一个从 SQL 数据库获取 XML 文件的脚本 我是这样做的 library RODBC library XML myconn lt odbcConnect mydsn query text lt SELECT xmlfield FRO
  • "rep; nop;" 是什么意思?在 x86 汇编中意味着什么?它与“暂停”指令相同吗?

    什么是rep nop mean 是不是一样pause操作说明 是不是一样rep nop 没有分号 和简单的有什么区别nop操作说明 它在 AMD 和 Intel 处理器上的表现是否不同 奖励 这些说明的官方文档在哪里 这个问题的动机 经过评
  • 事件处理后如何更新页面数据?

    在 Page Init 上 我根据几个数据库表创建了一个动态创建的控件表 其中一个控件是 ImageButton 用于在列表中向上移动列表项 此事件处理程序的作用是更新数据库中受影响项目的 SortOrder 列 现在的问题是 由于控件是在
  • AVCaptureDeviceType.builtInDualCamera 的作用是什么

    我正在玩 swift 和 iPhone 7 Plus 我正在使用builtInWideAngleCamera 和builtInTelephotoCamera 即使我无法同时获取两张图像 这也很棒 我在苹果文档中看到 AVCaptureDev
  • 测量和基准测试浏览器中 JavaScript 引擎的处理能力

    衡量 v8 或 Spidermonkey 等 JavaScript 引擎性能的准确方法是什么 它至少应该与一个评估和另一个评估没有太大的偏差 可能允许在不同操作系统和不同硬件配置上的不同 JavaScript 引擎之间进行排名 我的第一次尝
  • 如何在android中将视频文件(.mp4)格式转换为二进制格式?

    我想在网络服务器上上传视频 我得到了一个服务 我想以二进制格式传递一个文件 我该怎么做 我尝试在 base64 的帮助下将视频文件转换为二进制格式 public class binaryformat extends Activity pri
  • 管理 cron 作业创建的日志文件

    我有一个 cron 作业 每天将其日志文件复制到我的主文件夹中 每天它都会覆盖目标文件夹中的现有文件 这是预期的 我想保留以前日期的日志 以便下次将文件复制到目标文件夹时 它会保留以前日期的文件 我怎么做 管理 cron 日志的最佳方法是为
  • Selenium Actions 还是 Java AWT Robot?

    到目前为止 我一直使用 Selenium Actions 库来在我们的自动化项目中执行鼠标 键盘操作 最近 我发现了 Java AWT Robot 类 它与 Selenium Actions 库相比如何 其中一个是否存在另一个可以解决的极端
  • JQuery Datepicker 获取所选日期

    我目前正在使用 2 个独立的 JQuery 日期选择器 我已经修改了它们的格式 以便能够传递到存储在后端 MySQL 数据库中 我的日期选择器在这里被调用
  • 取消令牌源示例

    我正在执行一些异步操作 并且如果用户请求此操作 我想使用 CancellationToken 来停止异步任务的运行 为了做到这一点 拥有一个字典是一个很好的做法 我可以用它找到正确的线程以停止正确的操作 我目前正在查看的是以下内容 publ
  • bearingTo(Location dest) 到底计算什么?

    什么是bearingTo Location dest 具体计算一下 谁能解释一下吗 提前致谢 protected void onCreate Bundle savedInstanceState DestinationLoc setLatit
  • Liquibase 锁 - 原因?

    当我在 Oracle 服务器上运行大量 liquibase 脚本时 我得到了这个信息 某个计算机就是我 Waiting for changelog lock Waiting for changelog lock Waiting for ch
  • 有没有办法实例化匿名内部类中定义的类?

    我随机编写代码并遇到一个问题 如何实例化在匿名内部类中定义的类 E 如下所示 喜欢 A c new A class E Statements 您无法编写使用普通调用的程序new为此 为了实例化一个类 它必须有一个name 正如该术语所暗示的