方法调用中的编译错误

时间:2014-07-10 03:12:31

标签: java

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

}

6 个答案:

答案 0 :(得分:2)

你在<{1}}类

中有的默认构造函数

变化

Persons

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

或提供默认构造函数

答案 1 :(得分:0)

Person

中只有1个构造函数
public Persons(String name) {
        this.name = name;
}

但是,您可以像这样创建Person的新实例:

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

解决方案:

  1. 创建默认构造函数:public Persons () { }

  2. 使用现有构造函数:max = a.equal(new Persons(""));

答案 2 :(得分:0)

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

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

}

答案 3 :(得分:0)

您没有Person的默认构造函数,

 max = a.equal(new Persons("")); // <-- need a String.

此外,您应该将方法命名为equals(),因为这是Object方法;

@Override
public boolean equals(Object p) {
  if (p instanceof Persons) {
    return this.name.equals(((Persons) p).name);
  }
  return false;
}

答案 4 :(得分:0)

你也没有像这样的构造函数:

public Persons() //no parameter
 {
        this.name = name;
 }

因此您无法使用上述构造函数创建Persons(哇!太多人)的新实例。

答案 5 :(得分:0)

问题在这里

 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"));

或者您可以不向Persons类添加任何参数构造函数。

public Persons(){

}