如何在clojure中创建一个scala对象

 絆疯绊野半温柔 发布于 2023-01-31 16:44

我正在尝试kafka.utils.ZKStringSerializer用clojure 创建一个scala对象.(它在org.apache.kafka/kafka_2.10 "0.8.0")

由于我对scala知之甚少,所以我不知道如何调用它的构造函数.我试过这样的:

(import 'kafka.utils.ZKStringSerializer)
(ZKStringSerializer.)                      
; or (new ZKStringSerializer)

并得到一个错误: 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")
  }
}

senia.. 11

所有scala对象都是单例java.没有公共构造函数.您应该使用静态字段MODULE$来获取单例的实例.

我不知道clojure,但根据这个页面看起来你应该使用这个:

ZKStringSerializer$/MODULE$

另请注意,对象的实际类型名称包含$最后一个字符.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有