如何禁止通过反射创建对象?

时间:2015-10-29 20:20:30

标签: java android reflection

序言

我有一个班级:

public final class Session {

    private int userId;
    private String token;

    Session(int userId, String token) {
        this.userId = userId;
        this.token = token;
    }

    public String getToken() {
        return token;
    }

    public int getUserId() {
        return userId;
    }
}

如您所见,我们可以通过反射创建对象。

  • 我知道我可以通过 private package-private 修改器禁止访问构造函数。

目标

  • 禁止以反射方式创建对象以保护安全。
  • 仅限 package-private 访问填充对象字段。
  

P.S。也许它可以通过 OOP / OOD 方式完成?

1 个答案:

答案 0 :(得分:1)

在普通Java上,安装一个SecurityManager,其中包含描述所需内容的策略。

虽然Android有一个SecurityManager类,但是文档说不要使用它,我不认为有任何方法可以做你想要的,虽然我也不确定它是怎么回事有道理。