HOWTO · Java

Java エラー: コンストラクターが未定義です

この記事では、java エラー コンストラクターが未定義である理由について説明します。

このガイドでは、Java のエラー、コンストラクターが定義されていませんについて説明します。

Java の constructor is undefined エラー

constructor is undefined はよくあるエラーです。 このエラーは、タイトルのようにコンストラクターを定義していない場合に発生します。

ユーザーがデフォルトのコンストラクターとパラメーター化されたコンストラクターの間で混乱する可能性があるため、このエラーが発生するのは非常に簡単です。 最も一般的な問題は、ユーザーがパラメーターを使用してコンストラクターを定義することですが、呼び出し中にパラメーターについて言及しないことです。 したがって、このエラーが発生します。

別の理由として、コンストラクターの定義方法が考えられます。 コンストラクターは戻り値の型なしで定義されるため、戻り値の型が言及されている場合、同じエラーが発生する可能性があります。

コード例:

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 は、指定された型に適用できません; constructor is undefined と同じです。 ここでは単純な形状関数がパラメーター化されたコンストラクターとして定義されていますが、関数は呼び出し中にパラメーターを使用して呼び出されません。

2 番目の理由は、コンストラクターが戻り値の型を受け入れないことです。そのため、void について言及することさえ規則に違反しています。

Java の constructor is undefined エラーを修正

解決策は、戻り値の型voidを削除しながら上記のとおりです。 呼び出し関数のパラメーターに言及することで、constructor is undefinedというエラーをうまく取り除くことができます。

以下のコード スニペットは、前のコード セクションで説明したエラーを修正する方法を示しています。 これらのエラーを取り除くことで、プログラムを思い通りに実行できます。

コード例:

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 の構文を学習することを常に念頭に置いてください。