一个类具有自己的类型的字段可以吗

欲望PRG

我做了以下工作,一段时间后出现了stackoverflow错误,我知道为什么会这样。

public class Cat {
    String name="default name";
    Cat insideCat;

    public Cat(){
         System.out.println("Cat constructor");
         insideCat = new Cat();
    }

}

但是,如果我没有在构造函数中创建新的Cat对象,而是采用Cat类型的参数并将其分配给insideCat字段,该怎么办?

public class Cat {
    String name="default name";
    Cat insideCat;

    public Cat(Cat insideCat){
         System.out.println("Cat constructor");
         this.insideCat = insideCat;
    }

}

我只是在玩弄代码,只是试图找出Java可以做什么和不能做什么。在第二个代码中,一切看起来都很正常,直到我开始测试该类为止。我需要一个Cat对象来创建Cat对象(要创建这个Cat对象,我需要另一个Cat对象...然后它继续进行)。因此,从技术上讲,我无法测试该课程。

所以我的问题是,为什么Java允许创建自己类型的实例变量?我猜一个构造函数的全部目的是初始化它的实例变量。因此,要么我必须创建一个新对象来初始化insideCat,要么我必须从外部获取Cat对象。两者似乎都不起作用。

我在这里想念什么。有没有发生过其自身类型的实例变量变得有用并且可以毫无问题地使用的情况?提出像这样的类是不好的面向对象的实践吗?

戴夫·牛顿

这样的类一直存在。

考虑链接列表或树,例如,

class ListNode {
  ListNode next;
  // Etc.
}

class TreeNode {
  TreeNode left;
  TreeNode right;
  // Etc.
}

您不会在构造函数中初始化“子”对象,而是稍后添加它们。

在您的示例中,您需要insideCat一个稍后创建的方法通常,您不会创建状态完全相同的子对象,在构造时可能会有所区别,在这种情况下,您可能会遇到“哦,天哪,现在就停止创建这些对象”的情况,或者当它们处于被添加,例如,您将通过方法而不是在构造函数中添加它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django-有一个只有一个字段的模型可以吗?

来自分类Dev

在结构体中有一个类可以吗?

来自分类Dev

斯卡拉(Scala)。具有一个字段的案例类可以是值类吗?

来自分类Dev

具有类型类约束的类型同义词可以吗?

来自分类Dev

我可以有一个类字段,它是必须扩展另一个类和接口的类型的Class <?>吗?

来自分类Dev

在猫鼬模式中具有ObjectId的字段类型可以吗

来自分类Dev

可以有一个具有不同值类型的交集类型吗?

来自分类Dev

在类的每个方法中创建一个modelandview对象可以吗?

来自分类Dev

在一个小黄瓜场景中有多组给定/何时/然后可以吗

来自分类Dev

朋友请求和友谊表,我有一个主意可以吗?

来自分类Dev

是否可以创建一个类,其每个实例将具有不同的类型?

来自分类Dev

一个类中的构造函数可以具有多个super()吗?(Java或GWT)

来自分类Dev

我可以访问具有该集合中的一个集合的类吗?

来自分类Dev

我可以指定一个特定的标记始终具有一个特定的类吗?

来自分类Dev

为具有仅一个字段的案例类派生类型类实例

来自分类Dev

将两种不同类型的代码存储在同一个git仓库中可以吗?

来自分类Dev

我可以创建一个带有私有静态最终MethodHandle字段的ByteBuddy检测类型吗?

来自分类Dev

一个类中的构造函数可以具有1个以上的super()吗?(Java或GWT)

来自分类Dev

我可以为具有相同属性名称的两个类定义一个公共接口吗?

来自分类Dev

我可以拥有一个对象类型的 ArrayList ,它具有指向 Java 中对象的指针列表吗?

来自分类Dev

在Django REST框架3中,一个ModelSerializer可以具有用于创建或更新的不同字段集吗?

来自分类Dev

在Django REST框架3中,一个ModelSerializer可以具有用于创建或更新的不同字段集吗?

来自分类Dev

如何从couchdb获取所有文档首先要讲一个单词。在轻沙发上可以吗?

来自分类Dev

结构可以具有一个成员,该成员是指向相同类型结构的指针吗?

来自分类Dev

为什么一个类的实例可以访问其自身类型的另一个实例的私有字段?

来自分类Dev

将 1 个类转换为具有相同字段的另一个类

来自分类Dev

在具有线程ID的Java类中进行日志记录可以吗?

来自分类Dev

我们可以在类声明中声明一个类类型的指针吗?

来自分类Dev

我可以指定从另一个类扩展的类的类型吗?

Related 相关文章

  1. 1

    Django-有一个只有一个字段的模型可以吗?

  2. 2

    在结构体中有一个类可以吗?

  3. 3

    斯卡拉(Scala)。具有一个字段的案例类可以是值类吗?

  4. 4

    具有类型类约束的类型同义词可以吗?

  5. 5

    我可以有一个类字段,它是必须扩展另一个类和接口的类型的Class <?>吗?

  6. 6

    在猫鼬模式中具有ObjectId的字段类型可以吗

  7. 7

    可以有一个具有不同值类型的交集类型吗?

  8. 8

    在类的每个方法中创建一个modelandview对象可以吗?

  9. 9

    在一个小黄瓜场景中有多组给定/何时/然后可以吗

  10. 10

    朋友请求和友谊表,我有一个主意可以吗?

  11. 11

    是否可以创建一个类,其每个实例将具有不同的类型?

  12. 12

    一个类中的构造函数可以具有多个super()吗?(Java或GWT)

  13. 13

    我可以访问具有该集合中的一个集合的类吗?

  14. 14

    我可以指定一个特定的标记始终具有一个特定的类吗?

  15. 15

    为具有仅一个字段的案例类派生类型类实例

  16. 16

    将两种不同类型的代码存储在同一个git仓库中可以吗?

  17. 17

    我可以创建一个带有私有静态最终MethodHandle字段的ByteBuddy检测类型吗?

  18. 18

    一个类中的构造函数可以具有1个以上的super()吗?(Java或GWT)

  19. 19

    我可以为具有相同属性名称的两个类定义一个公共接口吗?

  20. 20

    我可以拥有一个对象类型的 ArrayList ,它具有指向 Java 中对象的指针列表吗?

  21. 21

    在Django REST框架3中,一个ModelSerializer可以具有用于创建或更新的不同字段集吗?

  22. 22

    在Django REST框架3中,一个ModelSerializer可以具有用于创建或更新的不同字段集吗?

  23. 23

    如何从couchdb获取所有文档首先要讲一个单词。在轻沙发上可以吗?

  24. 24

    结构可以具有一个成员,该成员是指向相同类型结构的指针吗?

  25. 25

    为什么一个类的实例可以访问其自身类型的另一个实例的私有字段?

  26. 26

    将 1 个类转换为具有相同字段的另一个类

  27. 27

    在具有线程ID的Java类中进行日志记录可以吗?

  28. 28

    我们可以在类声明中声明一个类类型的指针吗?

  29. 29

    我可以指定从另一个类扩展的类的类型吗?

热门标签

归档