我最近进入了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类的树集
创建了一个TreeMapTreeMap<String, TreeSet<ErrorMessage>> log = new TreeMap<>();
问题是每当我尝试将新的ErrorMessage对象添加到我的treemap的给定条目时,我得到一个错误,我的构造函数不接受2个字符串。 (查看下图)
如果我把它留空,它只允许我这样做:
log.get(projectName).add(new ErrorMessage());
Soo,我想知道我做错了什么,所以我的编译器无法识别我的构造函数? 这是完整的代码: http://pastebin.com/i76EYmm1
答案 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;
}