> 在 2020年6月5日,03:19,Valerie Peng <valerie.p...@oracle.com> 写道:
> 
>> Can you give an example when these 2 rules have different results? Is this 
>> only true for those implementation that directly subclass MessageDigest?
> 
> Before this fix, even the Spi impl implements Cloneable the instanceof check 
> will always fail because the wrapper class, i.e. MessageDigest.Delegate does 
> not. However, if you call the clone() (made public by the MessageDigest 
> class), it will succeed because Delegate.clone() checks to see if the spi 
> object implements the Cloneable interface, if yes, it will proceed to call 
> the spi clone(). So, for this scenario, the results are different, e.g. 
> instanceof returns false, but clone() succeeds. This is just one example. Is 
> this what you are asking?

No. 

I understand this case, but this has already been fixed. Is there any other 
example? Or are you only follow the words in the spec? i.e. try clone() to see 
if it’s cloneable. 

I am worried that try clone() is much heavier than just check instanof 
Cloneable. 

Thanks,
Max

Reply via email to