我如何摆脱RETURN声明?

时间:2016-06-26 08:03:31

标签: java return

我最后不需要任何退货声明。但否则它不会编译。

public class Word2 {

    private String word;

    public Word2(String word) {
        this.word = word;
    }

    public String getSubstrings() {
        for(int i=0; i<word.length(); i++) {
            System.out.println(word.substring(0,i+1));
        }

        return null;
    } 
}

2 个答案:

答案 0 :(得分:2)

  

我最后不需要任何退货声明。

实际上,如果您的getSubstrings方法被声明为返回String(正如您所做的那样),那么您需要return语句。 Java语言规范说你做了。

如果您不打算使用结果,那么您应该将返回类型声明为void ...并且您不需要return语句。

    public void getSubstrings() {
        // no 'return' required
    }

但是,现在您的方法名称具有误导性。传统的“获得......”可以归还某些东西。这就是“吸气者”所做的事。

答案 1 :(得分:1)

这取决于您真正打算使用getSubstrings方法做什么。你声明它返回String,但实际上并不是你的意图。

按照惯例,Java方法上的getX方法返回对象上的属性X,或者根据对象的属性计算的内容。在这里,我希望getSubstrings返回List<String>,一个子字符串列表,在这种情况下,您的方法应该创建一个新的List<String>,将子字符串添加到该列表(而不是打印它们,然后返回列表,如下:

public List<String> getSubstrings() {
    List<String> substrings = new ArrayList<>();
    for(int i=0; i<word.length(); i++)
    {
        substrings.add(word.substring(0,i+1));
    }
    return substrings;
}

相反,如果你真的想要将子字符串打印到System.out,那么你应该为你的方法提供一个更具描述性的名称,如printSubstrings,并给它一个void返回类型,这会声明你不会从方法中返回任何内容。

public void printSubstrings()
{

    for(int i=0; i<word.length(); i++)
    {
        System.out.println(word.substring(0,i+1));
    }

}