首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么PMF.java是一个“期末”类?

为什么PMF.java是一个“期末”类?
EN

Stack Overflow用户
提问于 2010-02-25 04:23:54
回答 2查看 993关注 0票数 2

根据App Engine文档,PersistenceManagerFactory应该只在应用程序中创建一次。

它提供了以下示例:

代码语言:javascript
复制
package guestbook;

import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManagerFactory;

public final class PMF {
    private static final PersistenceManagerFactory pmfInstance =
        JDOHelper.getPersistenceManagerFactory("transactions-optional");

    private PMF() {}

    public static PersistenceManagerFactory get() {
        return pmfInstance;
    }
} 

为什么除了使PMF.java成为"public final class“对象之外,pmfInstance还必须是"private static final”对象?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-25 04:28:01

类应该是最终的,除非有很好的理由不是这样。

没有想要从PMF继承的用例,所以它应该是最终的。

票数 6
EN

Stack Overflow用户

发布于 2010-02-25 04:44:22

PMF是一个不应该实例化的类,因为它没有实例状态或方法,它严格地提供静态方法和全局状态。

Effective Java中的第4项提供了这个习惯用法,但是它并没有添加这个类应该是final的,因为无论如何都不可能使用私有构造函数来子类它。在那里,明确建议将私有构造函数记录下来,以避免您遇到的混乱。

此外,此代码示例还提供了用于双重检查锁定的静态初始化workaround

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2329214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档