Java - 从方法返回接口或抽象类型是一种好习惯吗?

时间:2016-07-19 11:47:02

标签: java interface reference abstract

我已经获得了以下代码:

public static Map<String, Integer> getWordCount(String text) {

    Map<String, Integer> words = new HashMap<>();
    String[] wordsFromText = text.split("\\s+");

    for (String word : wordsFromText) {

        if (words.containsKey(word))
            words.put(word, words.get(word) + 1);
        else
            words.put(word, 1);
    }

    return words;
}

public static void main(String[] args) {

    Map<String, Integer> map = getWordCount("Ninjas are all over the place! We are all going to die!");

    // some logic that does something with the map...

}

我想知道它是否可以,或者它是否是一个好的做法,返回类型Map而不是具体的HashMap实现类型。

我的第二个问题是,为什么人们更喜欢通过引用指向具体类型的对象的更通用类型来声明变量(如Map ref = new HashMap();),而不仅仅是声明一个指向同一类型对象的具体对象类型的引用?有什么利弊?

0 个答案:

没有答案