完成此任务最简单的方法是
(case (.getName (class c))
"java.lang.String" "We got a string!"
"[[I" "An array of arrays of int.")
我建议只是使用字符串而不是尝试将其转换为符号,因为Java类的名称可能变得很复杂,如果它是一个数组,则开头带有方括号,如果它是一个嵌套类,则包含嵌入的美元符号。
还要记住,仅仅一个名称不足以唯一地识别一个类;您可能有不同类加载器加载的具有相同名称的类,这些类不是彼此兼容的。然而,对于您正在考虑的此类case
表达式的大多数情况,这可能不会成为问题。