本文将研究 Java 的错误,constructor not defined。
Java 中的constructor not defined错误
构造函数未定义是一个非常常见的错误。 当我们没有定义构造函数时,就会出现这个错误,如标题所示。
很容易出现此错误,因为用户可能会混淆默认构造函数和参数化构造函数。 最常见的问题是用户定义了带参数的构造函数,但在调用过程中却没有提及参数; 因此,会出现此错误。
另一个原因可能是构造函数的定义方式。 构造函数的定义不带任何返回类型,因此如果提到返回类型,可能会给出相同的错误。
代码示例:
public class Shapes
{
double Shapes;
double Width;
double Height;
public void Shapes(double Name) //constructor defined
{
Name=Shape;
}
public void setHeight(double HeightOfShape)
{
Height=HeightOfShape;
}
public void setWidth(double WidthOfShape)
{
Width=WidthOfShape;
}
}
public class TestClass
{
public static void main (String [] args)
{
Shapes Shape1 = new Shapes(); //Error will occor here.
Shape1.setHeight(5);
Shape1.setWidth(3);
}
}
输出:
TestClass.java:24: error: constructor Shapes in class Shapes cannot be applied to given types;
Shapes Shape1 = new Shapes(); //Error will occor here.
^
required: double
found: no arguments
reason: actual and formal argument lists differ in length
此错误 Shapes 类中的构造函数 Shapes 无法应用于给定类型; 与构造函数未定义相同。 这里定义了一个简单的形状函数作为参数化构造函数,但在调用过程中不会使用参数调用该函数。
第二个原因是构造函数不接受返回类型,因此即使提到 void 也是违反规则的。
修复Java中 constructor is undefined 的错误
解决方案如上所述,同时删除返回类型 void。 通过在调用函数中提及参数,我们可以成功消除错误,构造函数未定义。
下面的代码片段演示了如何修复前面代码部分中指出的错误。 通过消除这些错误,我们就可以按照我们的意愿运行程序了。
代码示例:
class Shapes
{
double shape;
double Width;
double Height;
public Shapes(double Name) //removing return type
{
Name=shape;
}
public void setHeight(double HeightOfShape)
{
Height=HeightOfShape;
}
public void setWidth(double WidthOfShape)
{
Width=WidthOfShape;
}
}
public class TestClass
{
public static void main (String [] args)
{
Shapes Shape1 = new Shapes(3); //adding proper parameters
Shape1.setHeight(5);
Shape1.setWidth(3);
}
}
不会留下任何错误,代码将按预期成功执行。
%> 请注意
,最简单的错误也可能导致这些类型的不必要的错误。
时刻记住适当修改代码并了解Java的语法,这样以后就不会再出现此类错误。