我可以在构造函数的参数中初始化数组吗

沙兰

我正在编写一个Triangle类的两个构造函数,该构造函数将参数作为参数:一个String,一个整数和一个double数组

private double [] side = new double[3];

public Triangle() {
    this("",0,side);
//Here I have a compile error says "Cannot refer to an instance field side while explicitly invoking a constructor"
}

public Triangle(String color, int opacity,double [] side) {
    super(color, opacity);
    this.side = side ;
}

在主要方法中,我想初始化三角形,但直到现在我还是无法这样做。

我尝试了这两种方式,但没有一种有效

    GeoShapes[1] = new Triangle( "Red"  , 89 , {2,4,3} ) ;

    GeoShapes[2] = new Triangle( "white", 68 , new double{5,6,3} );

注意:我确实尝试过初始化一个数组,然后将其引用放在第三个参数中,它可以工作,但这不是我所需要的

有谁能帮我在第三个参数中写什么?

罗希特·贾恩(Rohit Jain)

您必须像这样使用它:

geoShapes[1] = new Triangle("Red"  , 89 , new double[] {2,4,3});

您只能在声明时或与数组创建表达式一起使用数组初始化器。

另一种选择是varargs用作参数类型:

public Triangle(String color, int opacity, double... side) {
    super(color, opacity);
    this.side = side ;
}

那么您可以使用以下方法创建实例:

geoShapes[1] = new Triangle("Red", 89 , 2, 4, 3);

关于0-arg构造函数中的问题:

public Triangle() {
    this("",0,side);
}

您正在尝试将实例字段传递side给参数化的构造函数,该构造函数无效,因为side尚未初始化。所有的初始化工作都完成后,this()super()调用。您应该像通常那样创建一个数组并传递它。所以这将工作:

public Triangle() {
    this("", 0, new double[] {0, 0, 0});
}

并且请遵循正确的Java命名约定。变量名称以小写字母开头。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以检查构造函数主体中在初始化列表中设置的变量吗?

来自分类Dev

我可以使用在类构造函数中初始化的ofstream类型的成员变量吗?

来自分类Dev

我们可以在构造函数内部初始化静态变量吗?

来自分类Dev

用构造函数参数初始化结构数组

来自分类Dev

如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

来自分类Dev

可以在类构造函数中初始化线程导致崩溃吗?

来自分类Dev

C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

来自分类Dev

我必须初始化构造函数中的所有内容吗?

来自分类Dev

在C ++中的构造函数中初始化数组

来自分类Dev

在构造函数中初始化数组类变量

来自分类Dev

在构造函数中初始化const数组

来自分类Dev

C ++-在构造函数中初始化指针数组

来自分类Dev

C ++-在构造函数中初始化指针数组

来自分类Dev

如何在默认构造函数中初始化数组?

来自分类Dev

在构造函数中初始化二维数组

来自分类Dev

在 sfml 的构造函数中初始化向量数组

来自分类Dev

我可以从向量数组初始化std :: tuple吗?

来自分类Dev

我可以使用条件初始化数组吗?

来自分类Dev

我可以使用构造函数在带有1的模板和相关结构的类中初始化任意数量的元素吗?

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

我们可以在另一个类的构造函数的帮助下初始化对象吗?

来自分类Dev

在Swift中,我可以使用for-in枚举来初始化或重置数组吗?

来自分类Dev

为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

来自分类Dev

为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

来自分类Dev

初始化表达式可以像C ++中那样用于Java中的构造函数吗?

来自分类Dev

在构造函数中初始化ArrayList

来自分类Dev

在构造函数中初始化变量

来自分类Dev

在构造函数中初始化流

来自分类Dev

在构造函数中初始化流

Related 相关文章

  1. 1

    我可以检查构造函数主体中在初始化列表中设置的变量吗?

  2. 2

    我可以使用在类构造函数中初始化的ofstream类型的成员变量吗?

  3. 3

    我们可以在构造函数内部初始化静态变量吗?

  4. 4

    用构造函数参数初始化结构数组

  5. 5

    如何使可以使用Typescript中的对象或常规参数构造函数初始化的类?

  6. 6

    可以在类构造函数中初始化线程导致崩溃吗?

  7. 7

    C ++中的初始化程序列表和类初始化。我有无参数构造函数,但仍必须使用初始化列表?

  8. 8

    我必须初始化构造函数中的所有内容吗?

  9. 9

    在C ++中的构造函数中初始化数组

  10. 10

    在构造函数中初始化数组类变量

  11. 11

    在构造函数中初始化const数组

  12. 12

    C ++-在构造函数中初始化指针数组

  13. 13

    C ++-在构造函数中初始化指针数组

  14. 14

    如何在默认构造函数中初始化数组?

  15. 15

    在构造函数中初始化二维数组

  16. 16

    在 sfml 的构造函数中初始化向量数组

  17. 17

    我可以从向量数组初始化std :: tuple吗?

  18. 18

    我可以使用条件初始化数组吗?

  19. 19

    我可以使用构造函数在带有1的模板和相关结构的类中初始化任意数量的元素吗?

  20. 20

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  21. 21

    我们可以在另一个类的构造函数的帮助下初始化对象吗?

  22. 22

    在Swift中,我可以使用for-in枚举来初始化或重置数组吗?

  23. 23

    为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

  24. 24

    为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

  25. 25

    初始化表达式可以像C ++中那样用于Java中的构造函数吗?

  26. 26

    在构造函数中初始化ArrayList

  27. 27

    在构造函数中初始化变量

  28. 28

    在构造函数中初始化流

  29. 29

    在构造函数中初始化流

热门标签

归档