问题标签 [gen-class]

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 投票
3 回答
848 浏览

clojure - 难以理解:Clojure 中的状态

我明白什么:state/does/。它在您的类中创建一个字段,就像在 Java 中一样。我不明白这是什么意思?似乎我只看到它使用 Clojure 生成的扩展其他类的类来完成。http://www.fatvat.co.uk/2009/05/clojure-and-robocode.html就是一个例子。我不懂Java,也不太精通面向对象编程。有人可以向我解释 :state 的意义吗,以及它在哪里适合 Java 互操作?

非常感谢!

注意:当我说 :state 时,我指的是 (:gen-class :state)

0 投票
1 回答
1125 浏览

oop - 在 Clojure 中扩展类的问题:ClassFormatError: Duplicate field name&signature

我正在尝试使用 Clojure 扩展 JButton,但是当我尝试创建自己的构造函数时遇到了问题。每当我尝试实例化我的类时:constructors,我都会不断收到“ClassFormatError:重复的字段名称和签名”消息。:gen-class

我正在正确地遵循Clojure 文档。难道我做错了什么?

例子:

0 投票
2 回答
876 浏览

clojure - Clojure 的 :gen-class 和 double 数组

我正在尝试 :gen-class 一个 fn,它将一个二维数组作为输入。我已经在这里看到了关于类似主题的帖子和解决方案,但我仍然无法产生有效的解决方案。

我在我的输入"[[D"上使用基于使用。type这可以很好地编译成 .class 文件。

现在,当我移动到另一个 .clj 文件时,我有以下内容。

当我bar从 repl 调用时,我收到以下错误:

java.lang.IllegalArgumentException:未找到匹配字段:类的 heat_map2 [[D

有什么想法吗?

0 投票
3 回答
3823 浏览

clojure - 将元数据附加到 Clojure gen-class

是否可以将元数据附加到 Clojure 生成类?

我正在尝试实现一个使用库的服务器,该库需要将 Java 注释添加到类中。

从 Chas Emerick 等人即将出版的书“Programming Clojure”(第 9.7.3 节)中,向 gen-class 方法添加注释很容易,但没有提到添加类级别注释。

0 投票
2 回答
1052 浏览

clojure - clojure gen-class 可变参数构造函数

在 :constructors 映射和后续的 -init 定义中,我如何表示一个可变参数构造函数(假设超类有多个构造函数,其中一个是可变参数)?

0 投票
2 回答
390 浏览

java - 将 LazySeq 从 Clojure 返回到 Java 时出现 ClassCastException

我有返回 LazySeq 的 Clojure 函数。当我从 REPL 运行这个函数时,它工作得很好。但是,如果我尝试从 Java 代码中调用相同的函数,如下所示:

我得到以下异常:

我的 gen-class 说我返回的是 LazySeq,而不是数字:

这里出了什么问题?

0 投票
1 回答
369 浏览

clojure - 如何使用 gen-class 定义静态初始化程序

我正在从 Clojure 生成一个实现 JDBC 驱动程序的 Java 类,问题是通常 JDBC 驱动程序DriverManager在静态初始化程序中注册自己,如下所示:

我必须在gen-class声明中添加什么以及实现它的函数应该具有哪个名称?

谢谢。

0 投票
2 回答
2096 浏览

clojure - 我的简单 Clojure 生成类脚本有什么问题?

我正在尝试学习如何gen-class在 Clojure 中使用。我从这个简单的脚本开始:

当我尝试运行它时,我得到

我究竟做错了什么?

0 投票
1 回答
221 浏览

class - 如何从代理中获得“类”?

我想通过 生成一个类(不是对象)proxy,这个类稍后会被实例化。

我发现的 Clojure 代理方法的示例似乎主要处理最常见的 java 内部类场景,即,当我们只定义一个类时,因为我们想创建它的实例。

就我而言,我想定义一个真正的类——一个可以稍后加载的类。但我想定义它而不必使用gen-class.

那有可能吗?还是gen-class有要求?

0 投票
1 回答
575 浏览

serialization - 如何通过gen-class在Clojure中生成可序列化的java类?

我们需要通过 Java 序列化机制将 Clojure 生成的一堆 Java 对象序列化成一个文件。

如上,lancelot.FilterPipe 和 lancelot.SegmentorPipe 的实例需要序列化。我们发现写对象流是可以的,但是重新编译代码后读取对象流就不行了。

线程“Thread-8”中的异常 java.io.InvalidClassException: lancelot.SegmentorPipe; 本地类不兼容:流 classdesc serialVersionUID = 2583852145887230781,本地类 serialVersionUID = -2255006751011717591 at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:579) at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1601) at java.io .ObjectInputStream.readClassDesc(ObjectInputStream.java:1514) 在 java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750) 在 java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347) 在 java.io.ObjectInputStream.readObject(对象输入流.java:369)

由于serialVersionUID 是静态的和最终的,但似乎gen-class 只能生成实例级别的最终字段。所以问题是我无法为生成的类设置特定的serialVersionUID。

对这个问题有什么建议吗?提前致谢。