我有一个大约有10个班级的项目。为了清楚起见,我将一些类移至包中。有没有一种安全的方法可以在类之间进行连接而不会导致数据泄漏?公众是危险的,因为任何人都可以更改。
在将某些类移到单独的程序包后,我使用的每个方法/属性都必须是public /都必须有一个getter。参考字段的获取者可能会造成问题,并使所有内容都处于“公共”可见性之下。
例如我有Handler类(不在字符包中)。在这里,Player类使用处理程序的字符列表。
public class Handler {
LinkedList<GameObject> objects = new LinkedList<>();
...
}
package player;
...
public class Player extends GameObject{
...
private void collision() {
for (GameObject tempObj : handler.objects) {
...
}
}
...
}
谢谢!
最佳答案
有没有一种方法可以在类之间进行连接而不会导致数据泄漏?
这正是可见性修改器的作用!
将所有内容默认设置为私有,并在使用时“取消私有”:
特定字段的Getter和(也许)Setter(有时,将值设为“可设置”可能不明智,而是通过构造函数进行设置)
分而治之/拆分:编写小的可见(可能是公共的,可能是包可见的)方法,这些方法调用包含逻辑的私有方法
使用良好的IDE会有所帮助,因为它将建议将不必要的公共可见性更改为较低的可见性。我使用IntelliJ-它甚至可以让您定义生成方法的默认可见性。
通常,在两个不同的实例/类/事物之间共享数据很危险,您不能断言数据可能不会泄漏,但是您可以确保数据受到尽可能多的保护。
希望这回答了您的问题:)