/* Atleast is it needed in this case?*/
public class Service
{
private static List<String> subscribedFields;
private static List<String> unsubscribedFields;
//---------------------------------
// is this necessary?
//---------------------------------
public static void setFields(List<String> subscribedFields, List<String> unsubscribedFields)
{
Service.subscribedFields = subscribedFields;
Service.unsubscribedFields = unsubscribedFields;
}
public static List<String> getSubscribedFields()
{
return subscribedFields;
}
public static List<String> getUnsubscribedFields()
{
return unsubscribedFields;
}
}
// some other class
public class User{
// Is this not enough to change the lists? Isn't the setter redundant?
Change(Service.getSubscribedFields());
Change(Service.getUnsubscribedFields());
}
Run Code Online (Sandbox Code Playgroud)
不,私有变量并不总是需要公共setter.提供公共setter(以及getter)的想法是基于 - 类等外部实体需要访问您正在编写的特定代码段的内部.Getter和setter为此提供了公共接口.但是,您不一定需要为您创建的每个私有变量提供公共getter或setter,因为该私有变量可能仅存在于该类的内部私有用途.
您必须根据代码的特定需求决定是否特别需要访问您的私有变量.
根据评论中的ada问题进行更新
您可以直接授予用户访问列表的权限(是的 - 他们可以使用getter然后编辑列表).如果您信任代码的用户,这可能会有效.但是,由于各种原因,您可能不希望让他们直接访问您的列表(特别是因为它让他们自由地执行他们想要做的事情,如果您在应用程序中有线程,它可能会产生问题等) .在这种情况下,您应该在基础列表中提供接口.例如,在您的类中,您可能希望提供以下方法,而不是提供getSubscribedFields().
// Pseudocode
public String getSubscribedField(int i) {
return subscribedFields.Get(i);
}
public String addSubscribedField(String field) {
subscribedFields.Add(field);
}
Run Code Online (Sandbox Code Playgroud)
希望这有助于为您澄清一些事情.
| 归档时间: |
|
| 查看次数: |
4152 次 |
| 最近记录: |