Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
            
                    
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        2年前关闭。
                    
                
        

这是source code

但是似乎每次用户调用getInstance()时都会创建一个新的instance

我应该误会了一些东西。

最佳答案

资料与您的观察结果并不矛盾:

public static final KeyGenerator getInstance(String algorithm)
        throws NoSuchAlgorithmException {
    if (algorithm == null) {
        throw new NullPointerException("algorithm == null");
    }
    Engine.SpiAndProvider sap = ENGINE.getInstance(algorithm, null);
    return new KeyGenerator((KeyGeneratorSpi) sap.spi, sap.provider, algorithm);
}


SpiAndProvider返回的ENGINE#getInstance可能是单例。如果进一步研究实现,每次调用getInstance都会有一个新实例也就不足为奇了,因为KeyGenerator具有实例成员,该成员由您通过调用传递的参数启动。

关于java - Java KeyGenerator是否使用Singleton模式? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46124765/

10-09 03:15