1. ホーム
  2. java

[解決済み] GsonインスタンスをモデルBeanの静的フィールドとして使用する(再利用する)ことは問題ないでしょうか?

2022-04-27 14:16:19

質問

私が実装したモデルはこちらです。

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インスタンスをstaticフィールドとして使用しても問題ないでしょうか?

アドバイスやご指摘をよろしくお願いします。

解決方法は?

私にはちょうどいいようです。の特定のインスタンスに関連するような GSON インスタンスには何もありません。 LoginSession ということで、静的であるべきです。

GSONインスタンス スレッドセーフでなければならない があり、そこに に関するバグ を修正しました。