java—无法调用没有任何参数的对象

h9vpoimq  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(305)

这个问题在这里已经有答案了

java默认构造函数(13个答案)
上个月关门了。
我知道以前在其他问题中也有类似的问题被回答过,但我发现的所有问题都不适用于我的情况,所以我决定问它。
此行给出一个错误:

User users = new User();

错误消息:

constructor User in class User cannot be applied to given types;
  required: String,String,String,String
  found: no arguments
  reason: actual and formal argument lists differ in length

下面是我的java类文件。

public class User {

    private String username;
    private String pwd;
    private String email;
    private String role;

    public User(String username, String pwd, String email, String role) {
        this.username = username;
        this.pwd = pwd;
        this.email = email;
        this.role = role;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }
}
xqk2d5yq

xqk2d5yq1#

你的 User 构造函数接受4个参数: username , pwd , email ,和 role ,你想用 new User() ,它不提供任何参数。你应该提供:

User user = new User("username here", "pwd here", "email here", "role here");

或者,创建一个不带以下形式参数的构造函数:

public User() {
    this.username = /* some default value */;
    this.pwd = /* some default value */;
    this.email = /* some default value */;
    this.role = /* some default value */;
}

或者,要重用构造函数:

public User() {
    this(/* username default */, /* pwd default */, /* email default */, /* role default */);
}

你可以用 null 作为默认值,但这可能只会导致 NullPointerException 这是底线。

iih3973s

iih3973s2#

只需创建另一个构造函数:

public User(){}

当您创建一个类时,默认情况下会为您创建这个构造函数。当你自己创建一个构造器时,这个默认的构造器就不再适合你了,你必须自己添加它。

相关问题