问题标签 [clojure-java-interop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
117 浏览

macros - 因子 Clojure 代码使用绑定到 var 或 local 的参数映射在 Java 对象中设置许多不同的字段

我想在 Clojure 的 Java 对象中设置一组字段,而不在运行时使用反射。

这个解决方案(从其中一个解决方案复制而来)接近我所追求的:

这工作正常,但我希望宏能够处理作为 var 或作为本地绑定传入的字段和值的映射(即不直接传递给上述宏)。这些字段应表示为关键字,因此以下内容应有效:

我无法弄清楚如何使用 set 来做到这一点!以及宏中的特殊点形式(或任何在运行时不使用反射的如上工作的解决方案)。

0 投票
1 回答
384 浏览

clojure - clojure java互操作和接口

我在使用 Clojure 的 Java 接口时遇到问题。

我有以下课程:公共课 OpenAccess

其中有一个方法:静态连接连接(字符串网址)

其中 Connection 是一个接口:公共接口 Connection

在Java中,我会这样做来建立一个连接:

我从 Clojure 尝试了以下操作,但它不起作用:

它出现“IllegalArgumentException 未找到匹配方法:为类访问连接。OpenAccess”错误

我不知道如何从 Clojure 正确执行 Java 接口。

0 投票
1 回答
1681 浏览

java - Clojure - Java 互操作:传递一个 OutputStream 参数并返回一个字符串

我正在使用一个 java 库并想调用一个导出数据的方法。

此方法有两种变体:一种带有用作目标文件名的 String 参数,另一种接受 OutputStream 对象并使用 OutputStreamWriter 写入它。

我想使用第二种方法,并且能够将 OutputStream 恢复为字符串,这样我就可以用它做任何我想做的事情。

我不确定实际上是否可行,但是当我发现 clojure.core/with-out-str 时,我希望它是可能的,但是我不确定如何使用它。

是否可以从 Clojure 将 OutputStream 参数传递给 Java 方法并将写入的数据作为字符串取回?

谢谢。

编辑:

实际上,类构造函数接受一个 OutputStream 参数,一个方法通过它写入并关闭它。希望这可以帮助。

0 投票
1 回答
732 浏览

clojure - Clojure deftype with Type Hints?:找不到匹配方法,留下自动匹配的提示

我得到一个IllegalArgumentException: Can't find matching method: render, leave off hints for auto match,但我需要类型提示来重载该方法。我错过了什么……?

0 投票
1 回答
681 浏览

clojure - Clojure:是否可以调用 java 的包保护方法?

我找不到任何关于此的文档(或博客)。是否可以从 clojure 调用包保护方法?我们有一个庞大的 Java 代码库,我正在考虑是否可以开始围绕它们开发一些 clojure 库。

我尝试使名称空间与 java 中的包的名称空间相同,但找不到方法(静态)。

0 投票
2 回答
140 浏览

java - 如何声明一个 Clojure 函数并立即使用 clojure-utils 从 Java 代码运行?

我想声明一个 Clojure 函数并立即使用 clojure-utils 在 Java 代码中对其进行评估。这个怎么做?

我正在使用的代码是这样的:

如果我只是在字符串变量中使用以下表达式s,它将正常工作:

(list* (map #(/ % 2) '(1 2 3 4 5)))

Java 编译器将显示:

=> (1/2 1 3/2 2 5/2)

但是,如果我尝试同时声明我的函数,然后尝试从代码中调用它,如下所示:

编译器只会显示:

更新:我写了这个结构,很糟糕,但它有效:

结果: => (1/2 1 3/2 2 5/2)

更新 2(固定):

0 投票
1 回答
147 浏览

clojure - Calling java parent method from Clojure

Say I have a java library with the following pseudo code :

I want to use this from Clojure.

I have an instance of A, and I want to invoke method2 without going through Reflection methods.

What's the quickest way ?

0 投票
1 回答
558 浏览

android - 无法访问 getSystemService

我正在尝试调用getSystemService(method of Activity) 来访问传感器,但看起来它不存在。

这是我尝试过的代码:

我什至检查了awith的所有方法

getSystemService一个清单。但不知何故我不能称之为:Clojure 说没有这样的方法。

更新: getSystemService不是静态方法,所以这就是原因,我猜。

但是,有没有办法?

0 投票
1 回答
204 浏览

android - 将类转换为 SensorEventListener

我正在尝试注册SensorEventListener,但我的听众类型错误。

这是我尝试过的:

看起来我需要投到listenerSensorEventListener对吧?
我怎样才能做到这一点?

0 投票
1 回答
287 浏览

java - 在 clojure 中,assocEx 是做什么用的?

我正在实现一个自定义数据结构,出于所有意图和目的,它是一个排序的地图。我想对其进行编程,以便在涉及映射时可以使用 clojure 的所有抽象,例如assoccount等。为了做到这一点,我需要将 clojure 的clojure.lang.IPersistentMap协议扩展到我的新排序映射类型。

我的问题是:它的作用是什么assocEx,或者它的目的是什么?在普通的 clojure 映射上调用它表明它不同于assoc如果您尝试在映射中已存在键的位置插入键/值对,则会引发异常:

这与 不同assoc,后者只是将地图中的旧值替换为新值:

但是我似乎找不到显示此功能的“clojure”功能(上面未使用互操作表单/强制转换的功能)。使用普通的 clojure 抽象函数,我们在哪里可以看到这个函数的效果assoc