Java 方法调用中的编译错误

Java 方法调用中的编译错误,java,Java,您的Persons类中没有默认构造函数 改变 class Persons { private String name; public Persons(String name) { this.name = name; } public boolean equal(Persons p) { return p.name.equals(this.name); } } public class pa { public

您的
Persons
类中没有默认构造函数

改变

class Persons {
    private String name;

    public Persons(String name) {
        this.name = name;
    }

    public boolean equal(Persons p) {
        return p.name.equals(this.name);
    }

}

public class pa {
    public static void main(String ar[]) {
        Persons a = new Persons("Roman");
        boolean max;
        max = a.equal(new Persons());
        System.out.print(max);
    }

}


或者提供默认构造函数

类中只有一个构造函数Person

    max = a.equal(new Persons("someValue"));
但是,您创建了一个新的
Person
实例,如下所示:

public Persons(String name) {
        this.name = name;
}
解决方案:

  • 创建默认构造函数:
    publicpersons(){}

  • 使用现有构造函数:
    max=a.equal(新成员(“”)


  • 在提供参数化构造函数时,始终添加默认构造函数

    max = a.equal(new Persons());
    

    您没有Person的默认构造函数

    class Persons {
        private String name;
    
        public Persons(){
        } 
    
        public Persons(String name) {
            this.name = name;
        }
    
        public boolean equal(Persons p) {
            return p.name.equals(this.name);
        }
    
    }
    

    此外,您没有这样的构造函数:

    @Override
    public boolean equals(Object p) {
      if (p instanceof Persons) {
        return this.name.equals(((Persons) p).name);
      }
      return false;
    }
    
    因此,您无法使用上述构造函数创建
    Persons
    (哇!太多person.)的新实例。

    问题就在这里

    public Persons() //no parameter
     {
            this.name = name;
     }
    
    你必须把这个改成

     Persons a = new Persons("Roman");
     boolean max;
     max = a.equal(new Persons()); // Persons class don't have no-argument construtor
    
    或者,您可以不向
    Persons
    类添加参数构造函数

    max = a.equal(new Persons("yourValue"));
    

    想就错误消息给出提示吗?欢迎提供一些介绍性文本
     Persons a = new Persons("Roman");
     boolean max;
     max = a.equal(new Persons()); // Persons class don't have no-argument construtor
    
    max = a.equal(new Persons("yourValue"));
    
    public Persons(){
    
    }