Исключить java .lang.Process из пространства имен - PullRequest
0 голосов
/ 06 августа 2020

У меня есть запись с именем Process.

Выполнение следующих

(ns foo)
(defrecord Process ...)

приводит к ошибке Process already refers to: class java.lang.Process in namespace: foo

также, я получаю ту же ошибку, когда я import Process в другое пространство имен:

(ns bar
  (:import [foo Process]))

Следующие фрагменты решают мою проблему, но не кажутся чистыми.

(ns foo)
(ns-unmap *ns* 'Process)
(defrecord Process ...)

(ns bar
  (:import foo [.. ..]))
(ns-unmap *ns* 'Process)
(import [foo Process])

Я бы хотел исключить java.lang.Process из ns оператор, чтобы мне не нужно было ns-unmap или отдельное выражение import.

1 Ответ

0 голосов
/ 10 августа 2020

Вы можете создать свой класс, используя gen-class, и импортировать его, как показано ниже.

Класс

(ns tes
  (:gen-class
    :name tes.Process
    :constructors {[] [String]}))

Использование

(ns bar
  (:import [tes Process]))

(def process (Process .))
(prn :name process)
...