java - 从外部类获取实例变量的访问权限

标签 java class variables

我对编程相当陌生,我有一个关于类访问的问题。假设我创建了一个名为 TheClass 的类,其中包含一堆公共(public)变量和公共(public)方法。然后,我创建了几个其他需要访问 TheClass 实例的方法/变量的顶级类。因此,当我创建 TheClass 的实例并且我想通过其他顶级类访问该实例的变量时,我的理解是我可以:

在创建其他每个类时将 TheClass 的新实例传递到它们的构造函数中,以便它们可以访问 TheClass 实例内部的这些变量,如下所示:

TheClass theClass = new TheClass(); 

OtherClass otherClass = new OtherClass(theClass);

或者,我可以将所有其他类嵌套在 TheClass 中,从而使它们能够访问 theClass 实例的变量...我认为?

最后,我可以将 TheClass 的变量/方法设为静态,从而使 TheClass 之外的其他类可以访问它们,但这并不好,因为我需要访问正在运行的 TheClass 实例的变量。

我问这个问题的原因是因为我最近创建了我的第一个大程序,并且我将一个类对象的实例传递给大量其他类,而仅仅跟随它就变得相当繁琐。我觉得我做错了什么。我是否忽略了从其他顶级类访问类的实例变量方面的一些重大问题?

我距离理解 Java 编程的基础知识还有很长的路要走,但这是一个不断出现在我面前的问题,所以我想我会在这里问它。

最佳答案

这是一个常见问题,也是诸如单例模式依赖注入(inject)应用程序上下文(即只是单例的一个变体)非常受欢迎。

它们都可以让您始终最大限度地减少对象的传递。

第一步是架构。如果你的继承和组合正确,它会减少这种情况 - 尽管它仍然存在。

下一个选项始终是单例。 (应用程序上下文只是使用一个单例来指向该单例中的其他资源)。最近,依赖注入(inject)是迄今为止的首选途径,因为它也使单元测试等事情变得更加容易。

http://en.wikipedia.org/wiki/Dependency_injection

关于java - 从外部类获取实例变量的访问权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982639/

相关文章:

java - 使用 Java 将文本写入下一行

python - PyTorch 中 'Module' 的定义到底是什么?

python - 在列表中创建对象的两个副本

每个类的 Delphi 类变量

javascript - 在变量函数中调用 Javascript 函数[解决]

Java Scanner hasNext() 字符串正则表达式验证

java - 如何在 Hadoop MapReduce 中实现组合器?

java - 使用 inno-script-studio build设置 javafx-gradle-plugin?

php - 如何阻止变量在表单提交后重置?

c - 如何在 linux 内核中使用另一个 c 文件中的变量?