我开始学习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()时遇到错误,实际和形式参数的长度不同,“需要很长,没有参数”。我该如何解决这个问题?
答案 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);
确保您的构造函数及其所需的参数与您实例化数据的内容相匹配。只要声明自己的构造函数,生成的默认构造函数就不再可用。