Java 静态令牌生成?

Java 静态令牌生成?,java,static,secure-random,Java,Static,Secure Random,我发现了这个问题,答案包含以下代码: public final class SessionIdentifierGenerator { private SecureRandom random = new SecureRandom(); public String nextSessionId() { return new BigInteger(130, random).toString(32); } } 我的问题是,我能把nextSessionId设置为静

我发现了这个问题,答案包含以下代码:

public final class SessionIdentifierGenerator {
    private SecureRandom random = new SecureRandom();

    public String nextSessionId() {
        return new BigInteger(130, random).toString(32);
    }
}
我的问题是,我能把
nextSessionId
设置为静态的吗


我知道从技术上讲我可以,但我很好奇它是否是故意非静态的。我知道作者可能不会读我的问题,也不会向我解释他对这个问题的反应是什么,但也许有什么我不知道的,有人可以向我解释这个答案背后的原因。我认为让这个方法成为非静态方法没有意义,因为我从创建
SessionIdentifierGenerator
对象中什么也得不到。我更喜欢调用nextSessionId而不创建
SessionIdentifierGenerator
对象。

是的,从技术上讲,您可以使方法
成为静态的。
该类无论如何都是
final
,并且不
扩展任何其他类,因此重写该方法的参数在此不起作用

如注释中所述,
random
字段也必须是静态的。 因为,这也不是问题


静态方法的一个问题是很难在测试中进行模拟

是的,如果需要,您可以将其设置为
静态。但你为什么要这么做

您可能需要阅读以下内容,然后重新考虑将事物设置为静态:


  • 您必须将
    随机设置为静态well@Jonk是的,但我不觉得有什么问题。不好吗?不,只是观察而已