java - Java中构造函数的参数有什么要求吗

标签 java constructor

通常,构造函数如下所示

private int occurence;
private String content;
public Word(String content,int occurence)
{
   this.content= content;
   this.occurence = occurence;
}

但是我可以设置那些不直接分配给属性但需要计算属性值的参数吗?

例如,Article类中有一个名为calOccurence(String content)的方法,可以根据文章计算出现次数。那么我可以像这样构建构造函数吗?

public Word(String content, Article base)
{
   this.content= content;
   this.occurence = base.calOccurence(content);
}

如果 calOccurence 函数属于 Word 类,例如 calOccurence(String content, Article base) 呢?

public Word(String content, Article base)
{
   this.content= content;
   this.occurence = this.calOccurence(content, base);
}

看起来很奇怪,但我的队友写的代码就像上面这样。请问这样合理吗?

最佳答案

因为单词的出现如果没有 Article 就不可能存在,所以我认为最好从 Word 类中省略出现字段,而只在 Article 类中使用它。

类似这样的事情

public class Word {
    String text;
    Article article;

    public Word(String text, Article article) {
        this.text = text;
        this.article = article;
    }

    // other code
}

public class Article
    String content;
    public Article(String content) {
        this.content = content;   
    }

    public int calOccurrence(Word word) {
        // Calculate the occurrence of word.text in this.content
    }

    // other code
}

关于java - Java中构造函数的参数有什么要求吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26846367/

相关文章:

java - 无序列表项目符号在 JEditorPane 中看起来像素化

java - Java 中的空构造函数

java - 调用构造函数后何时创建对象

c++ - Visual Studio 2015 rc中从模板类派生的类的构造函数继承

java - 在这种情况下可以从构造函数中抛出异常吗?

java - 数组列表的浅拷贝

java - 如何统计目录中的文件数

java - Spring Boot、logback 和 logging.config 属性

java - Android Activity 在按下后退按钮之前没有响应

java - Firebase 数据库未正确同步