【发布时间】:2018-04-09 02:26:54
【问题描述】:
我是 Clojure 的新手,我正在尝试实现 Clojure 的 Java 接口。具体这段代码
import javax.print.*;
class Test {
public static void main (String [] args)
{
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);
System.out.println("Number of print services: " + printServices.length);
for (PrintService printer : printServices)
System.out.println("Printer: " + printer.getName());
}
}
PrintService 是一个接口,PrintServiceLookup 是一个构造函数类。我对如何使用 reify 和代理感到困惑。我的目标是在我的系统上安装已安装的打印机。
谁能举例说明如何使用 reify 或代理?从文档中我了解到我必须加载界面,然后加载我想要使用的方法,但我无法让它工作。
从我理解的Java角度来看,我必须从PrintServiceLookup.lookupPrintServices()获取一个对象,然后从PrintService接口应用getName函数,然后打印它。
我的尝试到现在
(defn print-serv []
(let [printS (proxy [PrintService PrintServiceLookup] []
(getName [])
(lookupPrintServices [])
)]
(.println (System/out) (.getName printSe))
)
)
我很确定一切都是错误的,但我不明白具体化和代理是如何工作的,如果有人能更好地向我解释,我将不胜感激!
【问题讨论】:
标签: clojure