0

我对 lisp 很陌生,对 java 也很陌生。我正在用 Java 开发一个简单的游戏,我认为与游戏交互会很有趣,因为我正在通过 REPL 对其进行编码。我一直在关注 Practical Common Lisp,并且对基本的函数结构有所了解。我开始使用 armed bear common lisp——一个在 java 虚拟机上运行的实现——并且能够编写一些用于创建 guis 的基本函数,例如:

(defconstant +jframe+ "javax.swing.JFrame")

(defun make-frame (length width &key visible)
  "Create a +jframe+"
  (let ((frame (jnew (jconstructor +jframe+))))
    (jcall (jmethod +jframe+ "setSize" "int" "int")
       frame length width)
    (if visible (frame-is-visible t frame))
    frame))

但是我不知道如何从 lisp 访问用户定义的类。整个实现似乎记录得很差,我发现很难从 lisp 中开始使用 java 特定的东西。例如,我有一个名为“Character”的编译字符类。但是当我调用 (jclass "Character") 时,我得到一个 "class not found" 错误。是否可以让 abcl 从 lisp 中了解我的课程?

4

1 回答 1

2

如果要创建自己编写并打包在 jar 文件中的 Java 类的实例,请使用 add-to-classpath:

(add-to-classpath '("Character.jar"))

然后,(jnew "org.example.Character")应该给你一个Character类的实例(假设它在org.example命名空间中)。

于 2012-07-16T13:59:43.653 回答