JAVA - 对象构造函数不接受参数?

时间:2016-05-08 07:31:06

标签: java oop parameters constructor

我最近进入了java,我目前遇到了一些问题。

我有一个简单的类,它有2个字符串作为成员和1个构造函数方法。 这是我的班级:

class ErrorMessage{
public void ErrorMessage(String type, String message){
    this.type = type;
    this.message = message;
}

private String type;
private String message;

}

如您所见,我的默认构造函数接受2个字符串并设置相应的数据成员。

每当我尝试实际调用该构造函数时,就会出现问题。 在我的main函数中,我用一个String和一个我的errorMessage类的树集

创建了一个TreeMap
TreeMap<String, TreeSet<ErrorMessage>> log = new TreeMap<>();

问题是每当我尝试将新的ErrorMessage对象添加到我的treemap的给定条目时,我得到一个错误,我的构造函数不接受2个字符串。 (查看下图)

如果我把它留空,它只允许我这样做:

log.get(projectName).add(new ErrorMessage());

Soo,我想知道我做错了什么,所以我的编译器无法识别我的构造函数? 这是完整的代码: http://pastebin.com/i76EYmm1

3 个答案:

答案 0 :(得分:4)

这不是正确的构造函数:

public void ErrorMessage(String type, String message){
    this.type = type;
    this.message = message;
}

...对于编译器这只是恰好与类名相同的方法

来自docs:

  

构造函数声明看起来像方法声明 - 除了它们使用类的名称没有返回类型

正确的构造函数应如下所示:

public ErrorMessage(String type, String message){
    this.type = type;
    this.message = message;
}

请记住:构造函数中没有返回类型!

答案 1 :(得分:3)

按如下方式定义构造函数

public ErrorMessage(String type, String message) {
  // Codes
}

答案 2 :(得分:1)

在java中,构造函数没有返回类型,甚至没有void。删除void以使其成为正确的java构造函数。

public ErrorMessage(String type, String message){
    this.type = type;
    this.message = message;
}