如何确保clojure变量具有正确的Java类型

vik*_*hal 3 java clojure apache-poi

java-code XSSFRow row = sheet.getRow(p);
clojure-code (def row (.getRow sheet p))
我们如何确保行是类型的XSSFRow

Chr*_*erg 7

Clojure是动态类型的,因此var/value的类型是在运行时确定的.

如果要确保某个值是某个类,可以进行以下断言:

(assert (= (class row) XSSFRow))
Run Code Online (Sandbox Code Playgroud)

或者,更简洁(感谢opqdonut):

(assert (instance? XSSFRow row))
Run Code Online (Sandbox Code Playgroud)

这不会检查确切的类,但对于任何超类:

(instance? Object row) ;=> true
Run Code Online (Sandbox Code Playgroud)

  • 或者更简洁``(断言(实例?XSSFRow行))` (6认同)