我有一个大约有 10 个类的项目。为了清楚起见,我将一些类移到了一个包中。有没有一种安全的方法可以在类之间连接而不导致数据泄漏? -使用 public 是危险的,因为任何人都可以改变它。
将一些类移至单独的包后,我使用的每个方法/属性都必须是公共(public)的/有一个 getter。引用字段的获取者可能会产生问题,并将所有内容置于“公共(public)”可见性。
例如我有 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) {
...
}
}
...
}
谢谢!
最佳答案
Is there a way to connect between classes without data leaks?
这正是可见性修饰符的用途! 默认将所有内容设置为私有(private),然后随时“非私有(private)”:
- 特定字段的 getter 和(可能) setter (有时将值设置为“可设置”可能并不明智,而是通过构造函数设置它)
- 分而治之/拆分它:编写小的可见(可能是公共(public)的,可能是包可见的)方法来调用包含逻辑的私有(private)方法
使用一个好的 IDE 会很有帮助,因为它会建议将不必要的公共(public)可见性更改为较低的可见性。我使用 IntelliJ - 它甚至允许您为生成的方法定义默认可见性。
一般来说,在两个不同的实例/类/事物之间共享数据是危险的,您不能断言数据可能不会泄漏,但您至少可以确保您的数据受到尽可能的保护
希望这能回答您的问题:)
关于java - 我可以在不公开所有方法/属性的情况下使用包吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57606095/