基本上,我是在书中进行Java练习的,而此源代码就是该练习的答案。 但是,eclipse说从底部开始的第三行有错误,说“-构造函数PhoneNumber()未定义”。 但是据我了解,特定的构造函数定义正确,那么问题是什么呢?

public class PhoneNumber {
    // Only the relevant source codes are posted here.
    // I removed other bits cause I'm sure they are not responsible for the
    // error

    private char[] country;
    private char[] area;
    private char[] subscriber;

    public PhoneNumber(final String country, final String area, final String subscriber) {
        this.country = new char[country.length()];
        country.getChars(0, country.length(), this.country, 0);
        this.area = new char[area.length()];
        area.getChars(0, area.length(), this.area, 0);
        this.subscriber = new char[subscriber.length()];
        subscriber.getChars(0, subscriber.length(), this.subscriber, 0);
        checkCorrectness();
    }

    private void runTest() {
        // method body
    }

    public static void main(final String[] args) {
        (new PhoneNumber()).runTest(); // error here saying :
                                        // "The constructor PhoneNumber() is undefined"
    }
}

===============>>#1 票数:6 已采纳

Eclipse是正确的。 您的代码没有定义没有参数的构造函数,这是您在main方法中使用new PhoneNumber()进行调用的过程。

您只有一个构造函数,即:

public PhoneNumber (final String country, final String area, final String subscriber)

如果您未指定任何其他构造函数 ,则将自动为您创建所谓的默认构造函数 ,即不带参数的默认构造函数。 由于使用3个参数指定一个,因此没有默认构造函数。

有两种解决方法:

  1. 声明no-arg构造函数; 要么
  2. 使用已有的构造函数。

要实现第一个选项,您可以执行以下操作:

class PhoneNumber {
  ...
  public PhoneNumber() {
    this("no country", "no area", "no subscriber");
  }
}

这将创建一个无参数的构造函数,该构造函数仅使用一组默认参数简单地调用您已有的构造函数。 这可能不是您想要的

要实现第二个选项,请更改您的main方法。 代替

(new PhoneNumber ()).runTest();

使用类似:

(new PhoneNumber("the country", "the area", "the subscriber")).runTest();

===============>>#2 票数:1

如果没有定义其他构造函数,则仅自动为您定义默认(无参数)构造函数。

===============>>#3 票数:0

您的错误是什么意思

PhoneNumber()

定义了构造函数(没有参数)。 默认情况下,如果不声明任何其他构造函数,则这是Java中可用的构造函数。 但是您通过实现来覆盖它

PhoneNumber (final String country, final String area, final String subscriber)

  ask by Kyle translate from so

未解决问题?本站智能推荐: