hal*_*elf 4 scala clojure apache-kafka
我正在尝试kafka.utils.ZKStringSerializer用clojure 创建一个scala对象.(它在org.apache.kafka/kafka_2.10 "0.8.0")
由于我对scala知之甚少,所以我不知道如何调用它的构造函数.我试过这样的:
(import 'kafka.utils.ZKStringSerializer)
(ZKStringSerializer.)
; or (new ZKStringSerializer)
Run Code Online (Sandbox Code Playgroud)
并得到一个错误: CompilerException java.lang.IllegalArgumentException: No matching ctor found for class kafka.utils.ZKStringSerializer
我尝试使用它(clojure.reflect/reflect ZKStringSerializer)来查看它的方法,但只有一些静态方法.并(class ZKStringSerializer)告诉我这是一个类,而不是我想要的实例.
该对象实现如下:
object ZKStringSerializer extends ZkSerializer {
@throws(classOf[ZkMarshallingError])
def serialize(data : Object) : Array[Byte] = data.asInstanceOf[String].getBytes("UTF-8")
@throws(classOf[ZkMarshallingError])
def deserialize(bytes : Array[Byte]) : Object = {
if (bytes == null)
null
else
new String(bytes, "UTF-8")
}
}
Run Code Online (Sandbox Code Playgroud)
sen*_*nia 11
所有scala对象都是单例java.没有公共构造函数.您应该使用静态字段MODULE$来获取单例的实例.
我不知道clojure,但根据这个页面看起来你应该使用这个:
ZKStringSerializer$/MODULE$
Run Code Online (Sandbox Code Playgroud)
另请注意,对象的实际类型名称包含$最后一个字符.