ClojureDocs

Namespaces

Clojure/Conj 2026 — Charlotte, NC — Sept 30 - Oct 2 Learn More & Get Tickets →

clojure.reflect

Reflection on Host Types
Alpha - subject to change.
Two main entry points: 
* type-reflect reflects on something that implements TypeReference.
* reflect (for REPL use) reflects on the class of an instance, or
 on a class if passed a class
Key features:
* Exposes the read side of reflection as pure data. Reflecting
 on a type returns a map with keys :bases, :flags, and :members.
* Canonicalizes class names as Clojure symbols. Types can extend
 to the TypeReference protocol to indicate that they can be
 unambiguously resolved as a type name. The canonical format
 requires one non-Java-ish convention: array brackets are 
 instead of [] so they can be part of a Clojure symbol.
* Pluggable Reflectors for different implementations. The default
 JavaReflector is good when you have a class in hand, or use
 the AsmReflector for "hands off" reflection without forcing
 classes to load.
Platform implementers must:
* Create an implementation of Reflector.
* Create one or more implementations of TypeReference.
* def default-reflector to be an instance that satisfies Reflector.
Vars in clojure.reflect

*^%

->AsmReflector
Positional factory function for class clojure.reflect.AsmReflector.
->Constructor
Positional factory function for class clojure.reflect.Constructor.
->Field
Positional factory function for class clojure.reflect.Field.
->JavaReflector
Positional factory function for class clojure.reflect.JavaReflector.
->Method
Positional factory function for class clojure.reflect.Method.

f

flag-descriptors
The Java access bitflags, along with their friendly names and the kinds of objects to which they can apply.

m

map->Constructor
Factory function for class clojure.reflect.Constructor, taking a map of keywords to field values.
map->Field
Factory function for class clojure.reflect.Field, taking a map of keywords to field values.
map->Method
Factory function for class clojure.reflect.Method, taking a map of keywords to field values.

r

reflect
Alpha - subject to change. Reflect on the type of obj (or obj itself if obj is a class). Return value and options are the same as for type-reflect.
Reflector
Protocol for reflection implementers.
resolve-class
Given a class name, return that typeref's class bytes as an InputStream.

t

type-reflect
Alpha - subject to change. Reflect on a typeref, returning a map with :bases, :flags, and :members. In the discussion below, names are always Clojure symbols. :bases a set of names of the type's bases :flags a set of keywords naming the boolean attributes of the type. :members a set of the type's members. Each member is a map and can be a constructor, method, or field. Keys common to all members: :name name of the type :declaring-class name of the declarer :flags keyword naming boolean attributes of the member Keys specific to constructors: :parameter-types vector of parameter type names :exception-types vector of exception type names Key specific to methods: :parameter-types vector of parameter type names :exception-types vector of exception type names :return-type return type name Keys specific to fields: :type type name Options: :ancestors in addition to the keys described above, also include an :ancestors key with the entire set of ancestors, and add all ancestor members to :members. :reflector implementation to use. Defaults to JavaReflector, AsmReflector is also an option.
typename
Returns Java name as returned by ASM getClassName, e.g. byte[], java.lang.String[]
TypeReference
A TypeReference can be unambiguously converted to a type name on the host platform. All typerefs are normalized into symbols. If you need to normalize a typeref yourself, call typesym.

AltStyle によって変換されたページ (->オリジナル) /