当前位置: 首页 > 面试题库 >

一个类如何拥有自己的类型的成员,这不是无限递归吗?

方苗宣
2023-03-14
问题内容

假设我定义了一个类,该类具有与自己相同类型的变量作为成员。

public class Abc {
    private Abc p;
}

这实际上有效,令我惊讶的是。

为什么我不应该这样:创建一个实例Abc,它包含一个类型为的变量Abc,其中包含一个类型为的变量Abc,其中包含一个类型为的变量Abc,.....

显然我错了,有人能启发我吗?


问题答案:

您仅声明变量而不创建它。尝试在声明或构造函数中创建它,让我知道会发生什么:

public class Abc {
   private Abc p = new Abc(); // have fun!

   public static void main(String[] args) {
      new Abc();
   }
}

顺便说一句,如果您不是在类中创建它,而是在getter方法或构造函数参数中接受对它的引用,则您的代码将正常工作。这就是某些链接列表的工作方式。



 类似资料:
  • 问题内容: 假设我们需要使用一个名为“ BaseNode”的类来实现不同类型的树,从该类派生其他类型的Node,并且它假定具有一个自己类型的实例变量,通常看起来像这样: 现在,如果我要为具有更多成员的AVL树派生Node: 原始(&)节点成员仍然会类型我实施AVL树,其防止。谁能告诉我如何解决这一继承问题?谢谢! 问题答案: 解决方案1- 每次访问时,都将其转换为。您可以在其中编写访问器以使其更加

  • 我从本例中的createDataFrame调用中获得了一个StackOverflow Error。它起源于涉及java类型推理的scala代码,该代码在无限循环中调用自己。 堆栈跟踪的底部如下所示: 这与中报告的错误类似http://apache-spark-developers-list.1001551.n3.nabble.com/Stackoverflow-in-createDataFrame

  • 查看我在某处(这里是游乐场)找到的这个Typescript4.2片段: 我的头不能绕着它。TS如何处理这件事?它怎么不卡在无限递归里?具体地说,对于和的情况,悬停在变量上显示TS将类型解析为和。这是怎么回事?

  • 问题内容: 我做了以下工作,一段时间后出现了stackoverflow错误,我知道为什么会这样。 但是,如果我没有在构造函数中创建新的Cat对象,而是采用Cat类型的参数并将其分配给insideCat字段,该怎么办? 我只是在玩弄代码,只是试图找出Java可以做什么和不能做什么。在第二个代码中,一切看起来都很正常,直到我开始测试该类为止。我需要一个Cat对象来创建Cat对象(要创建这个Cat对象,

  • 问题内容: 我的一个朋友在Java API(https://docs.oracle.com/javase/7/docs/api/java/lang/Enum.html)中找到了这个窍门, 并通过阅读以下文章https://docs.oracle.com/javase/tutorial/java/generics/genTypes.html我可以理解上述行在语法上的含义,但是从给出的示例中我无法弄清

  • 任何归纳类型都是这样定义的 具有类型。对此有一个双重概念,叫做共感应。 具有类型。注意和是如何对偶的。作为归纳和共归纳数据类型的示例,请看这个函式。 总是,也是如此。 我们可以使用从和生成。 这也是每次我们获得一个元素时,总共。 我的问题是,如果不使用递归(直接或间接),我们能否在时间内将转换为? 我知道如何使用递归(将转换为,然后将转换为(初始转换是,但随后)中的每个元素都是,使得第二次转换to