实际和形式参数长度不同 - Java Constructor错误

时间:2015-05-14 03:47:14

标签: java constructor

我开始学习Java,遇到了一个我无法解决的问题。我有一个名为MyClass的类,带有构造函数。我想设置该构造函数来访问私有字段:

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

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

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

我在data = new MyClass()时遇到错误,实际和形式参数的长度不同,“需要很长,没有参数”。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

来自here

  

编译器自动为没有构造函数的任何类提供无参数的默认构造函数

当您显式添加构造函数时,您将覆盖默认的no-arg。因此,要将其恢复,只需手动添加:

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;
    }
}

答案 1 :(得分:1)

你运行的东西Else()预计会返回很长时间。因此,如果要返回传入的参数,您希望它也是一个很长的参数。说你返回一个long然后传入一个整数作为参数然后返回它就没有多大意义。

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

如果这不是您的问题,请提供一个更具体的问题示例,我们的实际代码,以便我们可以看到可能出现的问题。

编辑:

MyClass data = new MyClass(Some long here);

确保您的构造函数及其所需的参数与您实例化数据的内容相匹配。只要声明自己的构造函数,生成的默认构造函数就不再可用。