当前位置: 首页 > 面试题库 >

是否可以将Gson实例用作模型bean中的静态字段(重用)?

弘浩瀚
2023-03-14
问题内容

这是我实现的模型

public class LoginSession {
    private static final Gson gson = new Gson();

    private String id;
    private String name;
    private long timestamp;

    public LoginSession(String id, String name) {
        this.id = id;
        this.name = name;
        this.timestamp = System.currentTimeMillis();
    }

    public String toJson() {
        return gson.toJson(this);
    }

    public static LoginSession fromJson(String json) {
        checkArgument(!isNullOrEmpty(json));
        return gson.fromJson(json, LoginSession.class);
    }
}

我认为为每个LoginSession实例创建新的Gson实例是没有用的。

但是我担心的是线程安全问题。大约将创建1000+实例/秒。

可以将Gson实例用作静态字段吗?

感谢您的任何建议/更正。


问题答案:

对我来说似乎很好。GSON实例中没有任何东西使其与的特定实例相关LoginSession,因此它应该是静态的。

GSON实例应该是线程安全的,并且存在关于已修复问题的错误。



 类似资料:
  • 我正在做一个项目,我们有一个使用spring数据和hibernate的spring boot应用程序。现在我想使用GSON库来处理JSON文件。我读过一个教程,在那里可以清楚地看到,创建POJO类并将JSON文件从这些类转换成对象是可能的。hibernate也是如此。 现在我的问题是:有没有可能设计POJO(或实体)类,使它们既适用于hibernate又适用于GSON。如果可能的话,如果我这样做,

  • 问题内容: 静态变量只有实例(也就是说,它们是类的一部分)。例如:Math.pi 有什么办法可以有多个静态变量实例吗?我听说有一些与Classloader相关的东西吗? 问题答案: 如果发现需要一个静态变量的多个实例,则强烈表明您不应该首先使用静态变量。 是的,如果同一类加载到不同的类加载器中,则该类的每个副本将具有其自己的静态变量。但是,唯一可以静态引用这些静态变量的代码将是由同一类加载器加载的

  • 问题内容: 我发现自己一次又一次地重复相同的代码片段,是否有可能在AngularJS中执行类似的操作: 上面的输出将是: 我不一定要寻找确切的“ ng:include”解决方案或模式,而是会减少模板中重复次数的方法。 问题答案: 这应该是您想要的。 脚本和ng- include的 文档。

  • 我有3个子类,每个都有唯一的ImagePath。 因此,我实现了,因为所有实例共享相同的映像。 问题就在这里。我想从父实例调用子静态方法。 当然,我可以使用调用基于类的静态方法。 假设我有10个子类,使用if-else语句并逐个调用它并不容易。 在Java中有没有办法从父实例调用子静态方法??

  • 问题内容: 有什么方法可以使用@Autowired静态字段。如果没有,还有其他方法可以做到这一点吗? 问题答案: 简而言之,没有。您不能在Spring中自动连线或手动连线静态字段。为此,您必须编写自己的逻辑。

  • 我有三节课。 > 一个抽象类,abstractA有一个受保护的构造函数 一个类扩展了抽象类,父类有两个构造函数 一个类扩展父类,子类有一个构造函数 这是从抽象类扩展而来的父类 这是从父类扩展而来的子类 自定义组件看起来像这样 所以,当spring为特定测试实例化所有bean时,它会正确地实例化子bean。当父bean被实例化时,它得到2个bean[父和子]。所以,我最终会出错, 类型父的多个bea