Java 应用程序/类设计 - Java 中的访问器如何工作?

标签 java

如何编写 getDB() 函数并正确使用它?

这是我的应用程序对象的代码片段:

public class MyApp extends UiApplication {

    private static PersistentObject m_oStore;
    private static MyBigObjectOfStorage m_oDB;

    static {
        store = PersistentStore.getPersistentObject(0xa1a569278238dad2L);
    }

    public static void main(String[] args) {
        MyApp theApp = new MyApp();
        theApp.enterEventDispatcher();
    }
    public MyApp() {
        pushScreen(new MyMainScreen());
    }

    // Is this correct?  Will it return a copy of m_oDB or a reference of m_oDB?
    public MyBigObjectOfStorage getDB() {
        return m_oDB;  // returns a reference
    }

}

最佳答案

public MyBigObjectOfStorage getDB() {
  return m_oDB;
}

正如你所说,这是正确的。它将返回引用的副本,它介于副本和引用之间。

getDB() 返回的实际对象实例与 m_oDB 引用的对象相同。但是,您无法更改 getDB() 返回的引用以指向不同的对象,并使其实际上导致本地私有(private) m_oDB 指向新对象。 m_oDB 仍将指向它已经存在的对象。

参见http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html了解更多详情。

虽然查看了那里的代码,但您根本没有设置 m_oDB,因此 getDB() 将始终返回 null。

关于Java 应用程序/类设计 - Java 中的访问器如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220624/

相关文章:

java - Hibernate Spring 双向多对多删除不起作用

java - context.getExternalFilesDir(null) 为空

java - DataSift - python api - 你如何停止流?

java - 数组输入未相加。 -- 总计 += ScoreArray[i];

java - 在java中根据循环顺序更改变量

java - 贷款支付计算器,如何实现多种方法。无法开发与主要方法交互的方法

java - 迁移到 JDK 11 + JavaFX 11 时出现 RuntimeException

java.lang.IndexOutOfBoundsException : Index: 3, 大小:3

java - 并行流在任务完成之前完成

java - BlockingQueue 失去其引用并在 Message Jetty WebSocket 上抛出 NullPointerException