首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将元数据附加到Clojure gen-class

将元数据附加到Clojure gen-class

在Clojure中,gen-class用于生成Java类,以便在Java代码中调用Clojure代码。通过将元数据附加到gen-class,可以为生成的Java类添加注解、接口和其他元数据。

以下是一个示例,演示如何将元数据附加到Clojure gen-class:

代码语言:clojure
复制
(ns my-namespace
  (:gen-class
    :name my.namespace.MyClass
    :implements [java.lang.Runnable]
    :methods [^{java.lang.Deprecated {}} [run [] void]]
    :init init
    :state state
    :prefix "-"))

(defn -init []
  [[] {:count 0}])

(defn -run [this]
  (swap! (.state this) update-in [:count] inc)
  (println "MyClass has been run" @(.state this) "times."))

在这个示例中,我们使用:gen-class宏生成一个名为my.namespace.MyClass的Java类,该类实现了java.lang.Runnable接口。我们还添加了一个名为run的方法,并使用java.lang.Deprecated注解将其标记为已弃用。

:init关键字用于定义初始化函数,该函数返回一个包含两个元素的向量:一个空列表(用于构造函数的参数)和一个初始状态(用于存储状态)。

:state关键字用于定义一个名为state的属性,该属性存储了生成的Java类的状态。

:prefix关键字用于定义一个前缀,该前缀将添加到所有生成的方法前面。在这个例子中,我们使用-作为前缀,这意味着所有生成的方法都将以-作为前缀。

总之,将元数据附加到Clojure gen-class可以让你更好地控制生成的Java类,并使其更易于在Java代码中使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Clojure 运行原理之编译器剖析

第二篇主要分析 Clojure 程序编译成的 bytecode 如何保证动态语言的特性以及如何加速 Clojure 程序执行速度,这会涉及到 JVM 的类加载机制、反射机制。 编译型 VS....编译器工作流程 与解释型语言里的解释器类似,编译型语言通过编译器(Compiler)来源程序编译为字节码。...Clojure 里面通过defmacro函数创建宏,它会调用var的setMacro函数来设置信息macro为true。...对应一个类,namespace 里面的每个函数对应类里面的方法,而实际上并不是这样的,根据 Clojure 官方文档,对应关系是这样的: 每个文件、函数、gen-class 都会生成一个.class文件...每个文件生成一个__init 的加载类 gen-class 生成固定名字的类,方便与 Java 交互 生成的 bytecode 会在本系列第二篇文章中详细介绍,敬请期待。

99930
  • Clojure 运行原理之字节码生成篇

    本文主要讨论 Clojure 编译成的 bytecode 如何实现动态运行时以及为什么 Clojure 程序启动慢,这会涉及到 JVM 的类加载机制。...根据 Clojure 官方文档,对应关系是这样的: 函数生成一个类 每个文件(相当于一个命名空间)生成一个__init 的加载类 gen-class 生成固定名字的类,方便与 Java...动态运行时 明确了 Clojure 类生成规则后,下面介绍 Clojure 是如何实现动态运行时。这一问题分为 AOT 编译与 DynamicClassLoader 类的实现两部分。...Callable)(new fn__38())); var10002 = null; } Var var10003 = const__3; // 为 main 设置信息...;; (:gen-class) 指令能够生成与命名空间同名的类 (ns how-clojure-work.core (:gen-class)) (defn -main [& _] (println

    72920

    for循环字典添加到列表中出现覆盖前面数据的问题

    , '密码': '123456'}, { '用户名': 'yushaoqi2', '密码': '123456'}] 我们可以看到上面的代码,我们通过for循环输入了3次不同的用户名和密码,并且添加到...user_list 的列表中,但是最终 user_list 打印了三次相同的数据 分析原因: 可以发现每次 for 循环添加到字典中,都会覆盖掉上次添加的数据,并且内存地址都是相同的,所以就会影响到列表中已经存入的字典...因为字典的增加方式dict[‘aaa] = bbb,这种形式如果字典里有对应的key就会覆盖掉,没有key就会添加到字典里。...{ '用户名': 'yushaoqi2', '密码': 'yushaoqi2'}] Process finished with exit code 0 每次for循环都将字典初始化,然后再添加数据

    4.5K20

    使用dataxmysql数据同步到ES elasticsearchwriter插件

    1、使用datax工具mysql数据库中的数据同步到elasticsearch中。...DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图: 类型 数据源 Reader(读) Writer(写) 文档 RDBMS 关系型数据库...) √ √ 读 、写 阿里云数仓数据存储 ODPS √ √ 读 、写 ADS √ 写 OSS √ √ 读 、写 OCS √ √ 读 、写 NoSQL数据存储 OTS √ √ 读 、写 Hbase0.94...TxtFile √ √ 读 、写 FTP √ √ 读 、写 HDFS √ √ 读 、写 Elasticsearch √ 写 时间序列数据库 OpenTSDB √ 读 TSDB √ √ 读...}] 46 } 47 } 48 }] 49 } 50 } 注意,需要搞一个elasticsearchwriter插件,elasticsearchwriter

    4.3K10

    伽马数据:2021宇宙全球发展报告(PDF下载)

    现在,宇宙(也常被称为'Web 3.0')的到来似平已成定局。虽然业界对宇宙概念的认知并未统一,但相信大多数人都会同意,我们正在迅速走向、并逐渐参与到一个比真实世界有更多可能性的模拟世界中。...尽管在行业外的眼光中,宇宙或许仍是一个无法实现的'遥远'概念,但事实是,我们已经生活在宇宙的初始框架内。 在我们尚未为之做好准备时,未来就已经降临。...在这份报告中,我们希望能涵盖已近在咫尺的宇宙机会以及宇宙概念对游戏生态系统的影响,主要探索目前被称为'宇宙'的集合概念的直接价值所在。...我们简单扼要地介绍'宇宙'的概念演变,然后深入探讨为何游戏行业的利益相关者应当对它加以重视,以及就其在未来十年中可能出现的演变给出我们的看法。...而在本报告最值得关注的利益相关者聚焦部分中,我们采访了一些在实现宇宙的道路上扮演不同角色的关键企业,包括The Sandbox、Hadean、英伟达、Unity 世纪华通、境、中手游。

    87320

    Hive快速入门系列(4) | 如何Hive数据配置到MySql

    上一篇博文我们讲了怎样安装MySql,这篇文章为上篇的后续,此篇文章讲的是如何Hive数据配置到MySql。 本系列所用到的安装包博主已经上传到百度云盘中,如有需要的可以自取。...mysql-connector-java-5.1.27]$ cd /opt/module/hive/conf [bigdata@hadoop001 conf]$ vim hive-site.xml 2.2 根据官方文档配置参数,拷贝数据到...多窗口启动Hive测试 3.1 先启动MySQL [bigdata@hadoop001 mysql-libs]$ mysql -uroot -p199712 # 查看有几个数据库 mysql> show...--------------------+ 3.2 再次打开多个窗口,启动hive [bigdata@hadoop001 hive]$ bin/hive 3.3 启动hive后,回到MySQL窗口查看数据库...,显示增加了metastore数据库 mysql> show databases; +--------------------+ | Database | +-----------

    96120

    R语言使用二回归序数数据建模为多元GLM

    但是该模型有几个截距,它们代表变量切分以创建观察到的分类表现的点。 就像在普通回归模型中一样,每个预测变量都会以一种方式影响结果,这就是比例赔率假设或约束。...基本思想是数据堆叠起来,使其成为一种重复测量,但是找到一种向软件发出信号的信号,即结果是不同的,从而对预测变量要求不同的截距和斜率。...因此,我们要做的是数据从宽转换为长,将其建模为常规二项式,但是我们需要告诉模型为每个级别估计不同的截距。为此,我使用具有unstructured工作相关性结构的通用估计方程(GEE)。...然而,Wald- χ 2χ2 测试统计数据略高。 ---- 完成此操作后,使用序数数据包当然要容易得多。但是,模型视为二进制可能会有一些好处,但是所有这些都是出于好奇而非必要。...分类数据分析。Wiley-Interscience。 ↩

    87420

    0916-5.16.2-如何Hive数据库从外部PostgreSQL转换到MySQL

    作者:刘强 1 文档编写目的 通过Navicat Premium的Data transfer工具来做数据转换。...测试环境: • CDH5.16.2 • PostgreSQL9.6 • MySQL5.7.34 • Navicat Premium 2 Hive数据库从PG转MySQL 从PostgreSQL中导出表的数据...,但是不导表结构,表结构通过CM去创建 2.1 创建Hive数据库 1.在MySQL中创建Hive数据库并授权 CREATE DATABASE hive_from_pg DEFAULT CHARACTER...MySQL库 3.在Hive -> Action中点击“创建 Hive Metastore 数据库表”来创建表结构 4.等待命令执行完成,在MySQL中查看Hive数据表已存在 5.执行以下SQL,修改表的字段类型...7.此时可以对数据表进行一些检查,比如对比一下行数是否准确。 8.启动Hive服务 9.验证Hive服务是否正常。

    17110

    宇宙不只是玩游戏!也改变你的工作,揭秘三大生产力巨变【下载】

    由于机器视觉首先在安防领域成熟,同时也作为海量数据的输入口,安防成为智慧城市率先落地的场景之一,数据量的加大也将带动算力需求和数据存储业务。 3)工业领域,数字孪生技术改变工业生产的各个环节。...对于企业而言,核心数据和系统全部上云,如何在宇宙底层资源不断更新和扩张时实现数据资源合规收集、储存和管理尚待探讨。...多模态数据的所有权、使用权和管理权分离一直是城市发展过程中的难题,而宇宙作为超大数据集合体,不仅要保护用户数据的隐私,更需要考虑挖掘和体现用户的数据价值。...同时由于宇宙需要获得更高的数据价值和虚拟空间体验,会将数据调用出来训练,并进行细颗粒度挖掘和实时同步,全范围的隐私计算技术数据在保持加密状态以及不泄露给使用方的前提下,实现计算合作。...未来隐私计算将成为宇宙时代城市管理的重要技术,不断提升跨世界中的城市数据管理的效率和安全性。 目前部分厂商正在探索区块链与隐私计算相结合的技术路径。

    39410

    ASP.NET MVC的Model数据与Model模板:”ListControl”引入ASP.NET MVC

    我们不仅可以创建相应的模板来根据Model数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model数据本身。...{ 3: public string Text { get; set; } 4: public string Value { get; set; } 5: } 我们提供列表数据的组件称为...ListAttribute实现了IMetadataAware接口,在实现的OnMetadataCreated方法中将在构造函数中指定的代表列表名称的ListName属性添加到表示Model数据的ModelMetadata...ViewData.ModelMetadata.AdditionalValues["ListName"]; 26: @Html.CheckBoxList("", listName, Model) 27: } ASP.NET MVC的Model数据与...Model模板:预定义模板 ASP.NET MVC的Model数据与Model模板:模板的获取与执行策略 ASP.NET MVC的Model数据与Model模板:ListControl引入ASP.NET

    4.8K60
    领券