我正在编写一个Clojure应用程序,它使用BouncyCastle在通过互联网传输时加密数据。然而,BouncyCastle有一些非常奇怪的类,特别是一个叫做ECCurve(椭圆曲线)的类。它只是一个由两个类Fp和F2m(不同类型的曲线)扩展的抽象类。但是,这些只是作为ECCurve中的公共静态类编写的(而不是在单独的文件中)。
所以问题是:当我在一个不同的抽象类中创建一个声明为static的类的实例时,我该如何引用它?我试过这个:
(def curve (new ECCurve.Fp params)) ; naive, I know (ECCurve is imported btw)
(def curve (new ECCurve/Fp params))
(def curve (new (. ECCurve Fp) params))
(def curve (new (ECCurve/Fp) params))
(def curve (new org.bouncycastle.math.ec.ECCurve.Fp params))
...但这些都不起作用(编译器说抛出了ClassNotFoundException)。任何想法,如何做到这一点?
谢谢, 大卫
答案 0 :(得分:5)
ECCurve$Fp
是真正的类名。 Javac允许你使用ECCurve.Fp
作为基本的语法糖。