【Clojure】Clojure与Java的互操作形式

Clojure vs Java:少数据结构、多函数胜过多个单独类的优点 在Clojure中,我们一次又一次地使用相同的数据结构,并在其上运行许多函数。另一方面,Java程序员为每一组数据创建一个唯一的类,并使用自己的“API”(getter、setter、return type等)来访问和操作数据。由于被迫在两个这样的“类API”之间进行翻译,我想与大家分享我的经验,从而在实践中证明格言中的真理 请注意,本文谈论的是数据和数据承载类,而不是“业务逻辑”,它将由Java中所述对象上的方法和Clojure中命名空间中的函数(最好是纯函数)实现。 注意:本文会交替使用Java和G 阅读详情

问题

如何在Clojure中使用Java的函数库

来源

平时不常用容易忘,记下来方便查询

内容

操作ClojureJava
创建类的实例(无参数)(ClassName.)new ClassName()
创建类的实例(有参数)(ClassName. arg1 arg2 ...)new ClassName(arg1, arg2, ...)
调用实例方法(无参数)(.methodName obj)obj.methodName()
调用实例方法(有参数)(.methodName obj arg1 arg2 ...)obj.methodName(arg1, arg2 ...)
调用静态方法(无参数)(ClassName/staticMethod)ClassName.staticMethod()
调用静态方法(有参数)(ClassName/staticMethod arg1 arg2 ...)ClassName.staticMethod(arg1, arg2 ...)
访问静态属性ClassName/FIELDClassName.FIELD
访问实例的属性(.field obj)obj.field
修改实例的属性(set! (.field obj) value)obj.field = value
引用ClassClassNameClassName.class

补充

再补充一个宏,可以完成流畅接口的调用链

ClojureJava
(.. "abcdefg" .toUpperCase (.subString 0 1))"abcdefg".toUpperCase().substring(0, 1)
10、Typed Clojure: Features, Formal Model, and Java Interoperability This blog discusses the core features of Typed Clojure, including Java interoperability, multimethods, and heterogeneous hash-maps, which enable type-safe programming within the Clojure ecosystem. It explores how Typed Clojure prevents runtime errors such 阅读详情

相关推荐

10、Clojure互操作语法:与Java无缝协作

本文详细介绍了Clojure与Java之间的互操作性,包括创建Java对象、调用实例方法和静态方法等内容。通过实践案例展示了如何结合Clojure与Java开发Web应用,并探讨了Clojure与Java互操作的高级特性,如代理、reify、类型提示等。最后总结了Clojure与Java互操作的实际应用场景及其优势。

gan8painter的博客 510

clojure与java_[Clojure学习笔记]Clojure与Java互操作

学习一门语言肯定要学习两个语言中不同的地方,以下介绍Clojure和Java不同的地方。 关键是要培养函数式的思维!在刚开始使用Clojure的时候,会有一些不适应。主要是Clojure的关键字少。大部分操作都是基于函数,在Java里面很常见的操作需使用函数才能实现。关键还是API不熟,函数式思维还没建立。以下部分例子,转换函数式思维import操作;用于导入Java的类(ns foo.bar(:...

weixin_30623181的博客 451

8、与Java交互:Clojure中的互操作性实践

本文深入探讨了Clojure与Java之间的互操作性实践,包括如何调用Java代码、使用Java库以及让Java代码调用Clojure函数。同时,文章还介绍了Clojure在与Java交互时的高级特性,如类型提示、异常处理和复杂库集成,并提供了最佳实践建议,帮助开发者充分利用两者的优点,提升开发效率和代码质量。

gan8painter的博客 583

clojure与java_Clojure:从Java调用Clojure

我们要在Java中调用Clojure有两种方法,一种是将Clojure代码生成class文件,另外一种是通过Clojure RT方式直接在java程序中调用Clojure代码。两种方式各有优缺点,第一种方式的优点在于在Java调用class与平常的java代码没有任何区别,而且对IDE友好。并且由于是预编译了代码,在运行时会有一些速度优势。但是缺点是会损失一些Clojure动态语言的优势。第二种方...

weixin_29356575的博客 407

57、探索Clojure高性能编程之道

本文深入探讨了如何利用Clojure实现高效的性能优化,涵盖性能设计、Clojure抽象特性(如持久化数据结构和惰性求值)、Java互操作性、并发与并行编程以及具体优化策略等内容。通过实际案例和技术细节分析,帮助开发者掌握Clojure性能优化的核心技巧。

gin88的博客 781

Clojure调用Java类的一个实例

Clojure调用Java类的一个实例

java 怎么调用clojure_从java调用Clojure

自从发表这一答复以来,一些可用的工具发生了变化。在最初的答案之后,有一个更新,包括有关如何用当前工具构建示例的信息。它并不像编译JAR和调用内部方法那样简单。不过,似乎确实有一些小窍门可以让这一切发挥作用。下面是一个可以编译到JAR中的简单Clojure文件的示例:(nscom.domain.tiny(:gen-class:namecom.domain.tiny:methods[...

weixin_36299242的博客 359

一篇NS SAR ADC的学习记录

一篇NS SAR ADC的学习记录 内容包含: OverSampling Noise Shaping Dynamic Amplifier DAC with Redundancy 最近看了些有意思的SAR ADC结构,但是因为确实对模拟这个领域不太熟,导致了一系列的级联查找,最终达到了一个大概能懂的状态,为了理清思路,顺便别让看了这么些天的东西浪费了,还是计划写篇文章。 ps:由于不是一篇特别正紧的报告,参考文献就写的比较随便,且我还是个做数字的 A 13.5-ENOB, 107-μW Noise-Sha

weixin_45669724的博客 8712

clojure实战——如何在java中调用clojure函数

clojure作为一门函数式编程语言,有其自身的优势,比如可以用极为精简的代码写一些逻辑运算,灵活的edn文件配置,编程效率特别高。因此,在需要编写一些较为复杂的逻辑模块或者是要和第三方clojure库/服务进行无缝交互时,可以使用该方法。

蜗牛的专栏 3451

从摄像头选型到PCB布线:搞懂MIPI CSI带宽计算,避免你的嵌入式项目翻车

本文详细解析了MIPI CSI带宽计算在嵌入式项目中的关键作用,从摄像头选型到PCB布线提供全流程指导。通过实际案例和计算公式,帮助工程师准确计算带宽需求,避免图像丢帧和系统崩溃问题,同时优化PCB设计确保信号完整性。

weixin_30533109的博客 376

用Python和CasADi实现高斯伪谱法:一个轨迹优化问题的保姆级教程

本文详细介绍了如何使用Python和CasADi框架实现高斯伪谱法解决轨迹优化问题。通过保姆级教程,从环境准备、问题建模到高斯伪谱法的核心实现,包括配点与权重计算、微分矩阵构造和动力学约束实现,最终完成问题求解与结果可视化。适用于机器人轨迹规划和无人机路径优化等工程场景。

weixin_30776273的博客 294

clojure java math_Clojure学习笔记 02.快速上手

这一节让我们来了解一下那些“使用Clojure编程必须要掌握的东西”。其实Clojure(以及其他lisp系语言)的学习曲线还是比较陡峭的。学习Clojure之前必须要掌握一些基础的数据结构和算法知识。同像性其实Lisp系语言的语法并没有什么可说的,因为Lisp系语言的代码实际上是由Lisp数据构成的。换句话说,当我们编写Lisp代码时,我们事实上是在描述一个数据结构。这种特性被称作同像性。例如,...

weixin_39808143的博客 297

大整数因数分解工具——yafu

可以将大整数放在一个新建文件中——data.txt,最后面一定要换行,不然会出现eof;done processing batchfile,运行命令。2.点击设置——系统——系统信息——高级系统设置——环境变量——点击PATH(上下都可以)——新建 添加yafu-x64.exe 所在路径——点击确定。,如果整数数过长,会出现错误mismatched parens;1.找到yafu-x64.exe 所在的文件路径。如果出现以下图像,说明配置成功。3.打开cmd,输入。

l2ohvef的博客 6156

Clojure与Java互操作:JVM生态的无缝集成

Clojure与Java互操作:JVM生态的无缝集成 Clojure作为JVM平台上的现代Lisp方言,通过与Java生态系统的深度集成实现了强大的互操作能力。本文详细探讨了Clojure与Java互操作的多个核心方面,包括基础方法调用语法、对象实例化、方法链式调用、类型系统集成(defprotocol、definterface、deftype、defrecord)、函数式接口与Java 8+特性...

gitblog_00066的博客 764

gtsam官方文档: The new IMU Factor学习笔记

gtsam官方文档:The new IMU Factor 本文为gtsam imu预积分文档学习笔记,为gtsam基于切向量实现的imu预积分的理论基础。 导航状态 定义导航状态为 Xbn={Rbn,Pbn,Vbn}X^n_b=\{R^n_b,P^n_b,V^n_b\}Xbn​={Rbn​,Pbn​,Vbn​} 上角标n:导航(navigation)坐标系 下角标b:载体(body)坐标系 下文均省略上下标 矢量场与微分方程 对于导航问题我们用如下微分方程描述 X˙(t)=F(t,X)\dot X(t)

南柯一梦的博客 1609

Avalonia 超级详细学习指南

什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。

仰望星空的博客 1万+

通过Clojure中的集合与序列谈谈抽象的重要

通过JVM之上的语言Clojure讲解一下什么是抽象,以及抽象的好处。

码农无双的博客 1070

【QT开发教程】如何在Qt中使用Protobuf进行高效数据序列化

Protocol Buffers(Protobuf)是Google开发的一种语言中立、平台中立、可扩展的序列化机制,常用于数据交换和存储。Qt作为一个跨平台的C++图形用户界面应用框架,可以与Protobuf结合使用,实现高效的数据序列化和反序列化。本文将介绍如何在Qt中集成和使用Protobuf,包括基本概念、安装步骤、使用示例以及实际应用。

科技改变人类,技术成就未来 1443

java clojure_Clojure使用Java方法

Clojure使用Java方法Clojure有个很强大的功能,就是你可以使用Lisp语言风格无缝调用java api(java interop).这无疑是如虎添翼.调用一个Java对象的方法语法:.method-name object-value args ...user=> (.toUpperCase "hello,clojure")"HELLO,CLOJURE"user=> (.i...

weixin_39862847的博客 260

Open3D 点云转深度图像【2026最新版】

python版本Open3D 实现的点云转深度图像,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 2838

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

clojure java.jdbc_Clojure驱动的Web开发

Clojure是运行在JVM之上的Lisp方言,提供了强大的函数式编程的支持。由于Java语言进化的缓慢,用Java编写大型应用程序时,代码往往十分臃肿,许多语言如Groovy、Scala等都把自身设计为一种可替代Java的,能直接编译为JVM字节码的语言。Clojure则提供了Lisp在JVM的实现。Clojure经过几年的发展,其社区已经逐渐成熟,有许多活跃的开源项目,足以完成大型应用程序的开...

weixin_36152359的博客 387

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Clojure使用Java方法

Clojure使用Java方法 Clojure有个很强大的功能,就是你可以使用Lisp语言风格无缝调用java api(java interop).这无疑是如虎添翼. 调用一个Java对象的方法 语法: .method-name object-value args ... user=> (.toUpperCase "hello,clojure") ...

AI天才研究院 8675

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

clojure-初始介绍

clojure是一门基于jvm平台的函数式编程语言,是lisp方言的一种,继承了lisp的大部分风格,且能够和java进行调用,被称为现代化的lisp语言 交互式命令行REPL R(read)、E(evaluate)、P(print)、L(loop) clojure程序通常不需要一次性全部输入,而是通过REPL能够输入一个表达式代码则可以立刻验证 REPL启动 安装jdk,版本1.7+ ...

itaha的博客 826

Clojure入门教程

转载自网址:  http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/ 内容列表 简介 条件处理 引用类型 函数式编程 迭代 编译 Clojure概述 递归 自动化测试 开始吧 谓词 编辑器和

caodaoxi的专栏 2341

Clojure学习笔记(一)——介绍、安装和语法

Clojure学习笔记(一)——介绍、安装和语法   什么是Clojure Clojure是一种动态的、强类型的、寄居在JVM上的语言。 Clojure的特性: 函数式编程基础,包括一套性能可以和典型可变数据结构媲美的持久性数据结构 由JVM提供的成熟的、高效的运行时环境:所以Clojure可以使用Java类库,反之Clojure库也...

大壮的博客 667

Clojure小教程

什么是函数式编程? 特点1:函数是一等公民,即与其他基本类型处于等价地位,可以被返回,可以被赋值也可以作为参数.python js clojure都支持这点. 特点2:更多的表达式,减少过程.即每个语句尽量都是计算并返回计算结果.所有的函数都要有返回值(可以为nil). 特点3:没有副作用(side-effect),即函数就是单纯的执行计算,不改变外部变量.(改变外部变量最简单的就是...

dengluan0964的博客 173
上一篇: 【Java】使用外部变量初始化子线程 下
下一篇: 【Java】深夜代码祭(1)
古明地觉
博客等级 码龄15年 2粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值