Java:类继承自身

2024-02-12

我知道这是毫无意义的:我只是觉得这很有趣,我想更多地了解当您创建一个继承自身的类时会发生什么,从而导致堆栈溢出崩溃。令人惊奇的是,Java 允许您首先进行这样的构造。

我只是猜测,但是 JVM 是否将自身置于无限循环中,试图在实例化该类之前解析该类,或者它实际上是在无休止地实例化该类的多个副本?

我应该更具体一些;我正在使用内部类从封闭类派生。

 public class Outside {
    private int outsideValue;

    public class Inside extends Outside {
        private int insideValue;
        public Inside(int val) {
            insideValue = val;
        }
    }

    public Outside() {
        Inside o = new Inside(0);
    }
}

public class Main {
    public static void main(String args[]) {
        Outside o = new Outside();
    }
}

请记住,自从Inside延伸Outside,它有一个隐式调用super()这是的构造函数Outside(这又调用了构造函数Inside),如此循环下去。

您发布的代码在概念上与以下程序没有什么不同:

class A {
    B b = new B();
}

class B extends A {
}

public class Test {
    public static void main(String[] args) {
        new A(); // Create an A...
                 //   ... which creates a B
                 //   ... which extends A thus implicitly creates an A
                 //   ... which creates a B
                 //   ...
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:类继承自身 的相关文章

  • “_加载小部件时出现问题”消息

    加载小部件时 如果找不到资源或其他内容 则会显示 加载小部件时出现问题 就这样 惊人的 此消息保留在主屏幕上 甚至没有说明加载时遇到问题的小部件 我通过反复试验弄清楚了这一点 但我想知道发生这种情况时是否有任何地方可以找到错误消息 Andr
  • Django 模型继承、重写字段

    我正在阅读 Python Web Development with Django 一书 我在书中找到了这个例子 class Book models Model title models CharField max length 100 ge
  • 使用cameltestsupport进行Camel单元测试,模板始终为空

    我正在用 Camel 做一个简单的单元测试 我想做的就是从文件 在资源下 读取 JSON 内容 将其发送到 Java 类进行验证 这是我试图测试的路线 无论我做什么 模板 我用来发送正文 json 始终为空 这是我的代码 public cl
  • 如果在睡眠线程上调用interrupt()会发生什么?

    我有一个线程 然后run I call sleep 如果我中断这个线程会发生什么 MyThread extends Thread public void run try sleep 1000000 catch InterruptedExce
  • 如何使用 SimpleDateFormat 解析多种格式的日期

    我正在尝试解析文档中的一些日期 用户似乎以类似但不完全相同的格式输入了这些日期 以下是格式 9 09 9 2009 09 2009 9 1 2009 9 1 2009 尝试解析所有这些内容的最佳方法是什么 这些似乎是最常见的 但我想让我困扰
  • Grails 2.3.0 自动重新加载不起作用

    我最近将我们的项目升级到 grails 2 3 0 一切工作正常 除了每当我更改代码时自动重新加载都无法工作的问题 这包括所有项目工件 控制器 域 服务 gsps css 和 javascript 文件 我的旧版本 grails 可以正常工
  • Condition 接口中的 signalAll 与对象中的 notificationAll

    1 昨天我才问过这个问题条件与等待通知机制 https stackoverflow com questions 10395571 condition vs wait notify mechanism 2 我想编辑相同的内容并在我的问题中添加
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • Firestore - RecycleView - 图像持有者

    我不知道如何编写图像的支架 我已经设置了 2 个文本 但我不知道图像的支架应该是什么样子 你能帮我告诉我图像的文字应该是什么样子才能正确显示吗 holder artistImage setImageResource model getArt
  • 如果使用的 JVM 是 x86 或 x64,则以不同的方式解决 Maven 依赖关系?

    我设置了一个 Maven 存储库来托管一些 dll 但我需要我的 Maven 项目根据使用的 JVM 是 x86 还是 x64 下载不同的 dll 例如 在运行 x86 版本 JVM 的计算机上 我需要从存储库下载 ABC dll 作为依赖
  • 内存一致性 - Java 中的happens-before关系[重复]

    这个问题在这里已经有答案了 在阅读有关内存一致性错误的 Java 文档时 我发现与创建 发生 之前 关系的两个操作相关的点 当语句调用时Thread start 每个具有 与该语句发生之前的关系也有一个 与 new 执行的每个语句之间发生的
  • 如何记录来自 Akka (Java) 的所有传入消息

    在 Scala 中 您可以使用 LoggingReceive 包装接收函数 如何通过 Java API 实现相同的目标 def receive LoggingReceive case x do something Scala API 有Lo
  • 为什么java中的for-each循环中需要声明变量

    for 每个循环的通常形式是这样的 for Foo bar bars bar doThings 但如果我想保留 bar 直到循环结束 我可以not使用 foreach 循环 Foo bar null Syntax error on toke
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Android - 9 补丁

    我正在尝试使用 9 块图片创建一个新的微调器背景 我尝试了很多方法来获得完美的图像 但都失败了 s Here is my 9 patch 当我用Draw 9 patch模拟时 内容看起来不错 但是带有箭头的部分没有显示 或者当它显示时 这部
  • 在android中跟踪FTP上传数据?

    我有一个运行 Android 的 FTP 系统 但我希望能够在上传时跟踪字节 这样我就可以在上传过程中更新进度条 安卓可以实现这个功能吗 现在 我正在使用org apache common net ftp我正在使用的代码如下 另外 我在 A
  • 嵌入式 Jetty - 以编程方式添加基于表单的身份验证

    有没有一种方法可以按如下方式以编程方式添加基于表单的身份验证 我用的是我自己的LdapLoginModule 最初我使用基本身份验证并且工作正常 但现在我想在登录页面上进行更多控制 例如显示徽标等 有没有好的样品 我正在使用嵌入式 jett
  • JAXB - 列表<可序列化>?

    我使用 xjc 制作了一些课程 public class MyType XmlElementRefs XmlElementRef name MyInnerType type JAXBElement class required false
  • 启动Java项目时发生类冲突:ClassMetadataReadingVisitor将接口org.springframework.asm.ClassVisitor作为超类

    我正在使用最新的Spring框架版本 3 2 2 RELEASE 开发一个Java Web项目 但是现在项目启动时遇到了问题 详细错误是 java lang IncompleteClassChangeError 类 org springfr

随机推荐

  • 模块化 Rails 应用程序

    我正在寻找一种模块化 Rails 应用程序的方法 正如我所见 没有内置的方法可以实现它 我发现了不同的插件 核心黑客 但我对它们的工作方式和成熟度感到不信任 您有这方面的经验吗 到目前为止我发现了这些 Desert http github
  • 实体框架 - Azure 表存储提供程序 - 枚举支持

    我实际上正在使用 EF 的 Azure 存储表提供程序 EntityFramework AzureTableStorage 7 0 0 beta1 https www nuget org packages EntityFramework A
  • jQuery HTML5 范围滑块中的实时输出

    我正在尝试将 HTML5 输入范围滑块的实时输出获取到 JavaScript 变量中 现在 我正在使用
  • 如何在C++中实现猴子补丁?

    是否可以在 C 中实现猴子修补 或者还有其他类似的方法吗 Thanks 不可移植 而且由于大型项目存在危险 您最好有充分的理由 预处理器可能是最好的候选者 因为它对语言本身一无所知 它可用于重命名属性 方法和其他符号名称 但至少对于单个 i
  • 违反 - 未找到父键 02291.00000 - “完整性约束

    您好 我正在 Oracle SQL 开发中开发一个数据库 该数据库正在尝试从另一个表访问外键 我目前正在处理使用以下 CREATE 语句创建的 ItemOrdered 表 CREATE TABLE ItemOrdered OrderID v
  • PhpStorm - 打印类文件中的方法和变量

    我有大约 10 个类 全部都在单独的文件中 我已经很久没有看过它们了 是否有 PhpStorm 函数允许我列出各个文件中列出的方法和属性 编辑 解决方案是突出显示您感兴趣的所有类 然后使用图表工具 请参阅下面我的回答 您可以使用 PHPSt
  • SOAP 调用在 SoapUI 中有效,但在 PHP 中使用soapclient 失败 - 对象引用问题

    尝试使用 PHP 5 x 查询托管在 IIS 服务器上的 NET Web 服务 wsdl path http 192 168 1 1 TestSite TestService asmx wsdl soapClient new SoapCli
  • 如何使用 gdal 通过一个命令将 png 平铺的投影从 epsg:4326 转换为 epsg:3857

    我平铺了 png 文件 这些投影是 EPSG 4326 我使用以下 2 个命令将投影转换为 EPSG 3857 gdal translate of Gtiff a ullr 135 00000000000003 36 59788913307
  • 使用 OpenMP 的程序崩溃,仅限 x64

    当我在 Release x64 中构建下面的程序时 它会崩溃 所有其他配置都运行良好 是我做错了还是 OpenMP 问题 扎实的解决方法受到高度赞赏 要使用以下代码重现构建项目 控制台应用程序 在 Release x64 配置中使用 ope
  • 可点击的图像视图位置随动画变化 - android

    我有一个包含在RelativeLayout 中的图像视图 单击图像视图时 我使用平移动画为整个relativelayout设置动画以将其向下移动 当我再次单击图像视图 在新位置 时 它应该将其移回原来位置 但事实并非如此 但是 如果我单击图
  • 如何做 git 子模块以及为什么使用 git 子模块

    我找到了一个 GitHub 项目 它使用 git 子模块 git 子模块有什么用 如何创建 git 子模块 它们与子树有何不同 Git 子模块 git 存储库中的子模块就像一个子目录 它本身就是一个单独的 git 存储库 当 git 中有一
  • RESTful WCF 服务中的 PUT 和 DELETE 导致 401 未经授权的错误

    我在 IIS 7 5 中有一个 RESTful Web 服务 它在我们的开发环境中运行得很好 现在我们已经部署到 QA 环境 并且仅在 PUT 和 DELETE 动词上收到 401 错误 我读过很多关于 405 错误的文章 但关于 401
  • Java 字符串到日期时间

    我有一个来自 json 响应的字符串 start 2013 09 18T20 40 00 0000 end 2013 09 18T21 39 00 0000 如何将此字符串转换为 java DateTime 对象 我尝试过使用以下内容 Si
  • javascript 中的正则表达式可删除任何不存在的内容:a-z 0-9 和连字符

    提前致谢 我想要一个正则表达式来删除所有非字母数字和连字符的内容 因此允许使用 A Z 0 9 和 另外 我如何将其应用于 Javascript 中的字符串 再次感谢 var str a23a asd str replace a z0 9
  • 使用 clang 的指令 movq 的操作数无效

    我正在使用movq使用基于 LLVM 的 clang 902 0 39 1 编译器的 Intel Core i5 上的 X86 64 汇编指令 Intel 语法中的简化代码 位于 my asm S 文件中 如下所示 intel syntax
  • gradlew:权限被拒绝

    我尝试从命令行运行 gradlew 但经常遇到以下错误 Brendas MacBook Pro appx android brendalogy gradlew compileDebug stacktrace bash gradlew Per
  • 在调度程序任务中使用removeAll()

    在做新的事情之前 我希望我的调度程序任务从数据库中删除所有条目 执行函数如下所示 public function execute objectManager TYPO3 CMS Core Utility GeneralUtility mak
  • 如何结合callLater和addCallback?

    实在是太崩溃了 希望大家怜悯我 reactor callLater 0 myFunction parameter1 addCallback reactor stop reactor run myFunction返回一个延迟的 我希望我想做什
  • 如何自动弹出键盘?

    我有编辑文本字段 我必须在其中输入密码 但我必须推送此字段 如何在不触摸编辑文本的情况下自动弹出键盘 有一个编辑文本 xml 字段
  • Java:类继承自身

    我知道这是毫无意义的 我只是觉得这很有趣 我想更多地了解当您创建一个继承自身的类时会发生什么 从而导致堆栈溢出崩溃 令人惊奇的是 Java 允许您首先进行这样的构造 我只是猜测 但是 JVM 是否将自身置于无限循环中 试图在实例化该类之前解