实际参数和形式参数长度不同 - Java 构造函数错误

Actual and formal arguments Differ in length- Java Constructor error

我开始学习 Java 并且我 运行 遇到了一个我无法解决的问题。我有一个名为 MyClass 的 class 和一个构造函数。我想将该构造函数设置为访问私有字段:

public class MyClass{
    private long variable1;
    public MyClass(long variable1){
        this.variable1=variable1;
    }
    public long somethingElse(Argument argument){
        return somevalue;
    }
    }

当我删除构造函数时,我可以从另一个 class 调用 somethingElse。但是,当我尝试

data = new MyClass(); 
return data.somethingElse(argument);

我在 data = new MyClass() 处收到一个错误,实际参数和形式参数的长度不同 "requires long, found no arguments"。我该如何解决这个问题?

嗯,你的函数 somethingElse() 预计 return 很长。因此,如果您 returning 传入的参数,您希望它也很长。说你正在 return 一个 long 然后传入一个整数作为参数并 return 那是没有多大意义的。

public long somethingElse(Argument argument){
    return somevalue; // have to make sure this is a long.
}

如果这不是您的问题,请提供更具体的问题示例,我们提供您的实际代码,以便我们了解可能出了什么问题。

编辑:

MyClass data = new MyClass(Some long here);

确保您的构造函数及其所需的参数与您实例化数据的目标相匹配。一旦您声明了自己的构造函数,生成的默认构造函数就不再对您可用。

来自here

The compiler automatically provides a no-argument, default constructor for any class without constructors

显式添加构造函数时,您覆盖了默认的无参数构造函数。所以,要取回它,只需手动添加它:

public class MyClass{
    private long variable1;

    // This is what you need to add.
    public MyClass() {
    }

    public MyClass(long variable1){
        this.variable1 = variable1;
    }

    public long somethingElse(Argument argument){
        return somevalue;
    }
}