类中的静态映射 - 公共还是私有?

时间:2017-01-05 18:39:51

标签: java oop

我想在其他类中使用静态Map。如果你能告诉我哪种做法更好。我可以将其设为私有,并为密钥和值提供适当的getter和setter。另一方面,第二个选项只是声明它是公共的,并且在这些类中使用内置Map Collection中的方法。

第一个选项示例:

public class MapClass{
    private static Map<int, String> map = new HashMap<>();

    public String getValueForKey(int key){
        return map.get(key);
    }

    // other methods
}

public class DifferentClass{
     public void writeString(int number){
        System.out.println(MapClass.getValueForKey(number));
    }
}

第二个选项示例:

public class MapClass{
    public static Map<int, String> map = new HashMap<>();
}

public class DifferentClass{
    public void writeString(int number){
        System.out.println(MapClass.get(number));
    }
}

1 个答案:

答案 0 :(得分:0)

我更愿意使用第一种方式。首先,如果可能的话,所有课程领域都应该是私人的。其次,对象不应该只是具有getter和setter的容器,但它们应该提供其他方法来更改数据(例如getValueForKey(int key),如第一个示例中所示)。 它在很多关于OOP的书中被广泛描述。