【问题标题】:JAVA - Object constructor does not accept parameters?JAVA - 对象构造函数不接受参数?
【发布时间】:2016-09-03 00:03:25
【问题描述】:

我最近接触了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 函数中,我用我的 errorMessage 类的 String 和 TreeSet 创建了一个 TreeMap

TreeMap<String, TreeSet<ErrorMessage>> log = new TreeMap<>();

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

只有当我像这样将其留空时,它才允许我这样做:

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

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

【问题讨论】:

    标签: java oop parameters constructor


    【解决方案1】:

    这不是正确的构造函数:

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

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

    来自文档:

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

    正确的构造函数应该是这样的:

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

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

    【讨论】:

      【解决方案2】:

      定义你的构造函数如下

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-27
          • 1970-01-01
          • 2013-02-23
          • 1970-01-01
          • 2013-10-30
          • 2015-07-24
          • 2014-02-09
          • 1970-01-01
          相关资源
          最近更新 更多