GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing clojure.github.io — clojure.reflect - Clojure v1.12.4 API documentation
Clojure v1.12.4 API
Namespaces
Other Versions
Clojure Home
Table of ContentsAPI for clojure.reflect - Clojure v1.12.4 (stable)by Stuart HallowayFull namespace name: clojure.reflect OverviewReflection 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.Added in Clojure version 1.3 ProtocolsClassResolverProtocolKnown implementations: clojure.lang.Fn, java.lang.ClassLoader resolve-classfunctionUsage: (resolve-class this name) Given a class name, return that typeref's class bytes as an InputStream. ReflectorProtocolProtocol for reflection implementers.Known implementations: AsmReflector, JavaReflector do-reflectfunctionUsage: (do-reflect reflector typeref) TypeReferenceProtocolA 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.Known implementations: clojure.asm.Type, clojure.lang.Symbol, java.lang.Class typenamefunctionUsage: (typename o) Returns Java name as returned by ASM getClassName, e.g. byte[], java.lang.String[] TypesConstructorrecordFields: [name declaring-class parameter-types exception-types flags] Protocols: Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map FieldrecordFields: [name type declaring-class flags] Protocols: Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map MethodrecordFields: [name return-type declaring-class parameter-types exception-types flags] Protocols: Interfaces: clojure.lang.IHashEq, clojure.lang.IKeywordLookup, clojure.lang.ILookup, clojure.lang.IObj, clojure.lang.IPersistentMap, java.io.Serializable, java.util.Map Public Variables and Functions->AsmReflectorfunctionUsage: (->AsmReflector class-resolver) Positional factory function for class clojure.reflect.AsmReflector.Source ->ConstructorfunctionUsage: (->Constructor name declaring-class parameter-types exception-types flags) Positional factory function for class clojure.reflect.Constructor.Source ->FieldfunctionUsage: (->Field name type declaring-class flags) Positional factory function for class clojure.reflect.Field.Source ->JavaReflectorfunctionUsage: (->JavaReflector classloader) Positional factory function for class clojure.reflect.JavaReflector.Source ->MethodfunctionUsage: (->Method name return-type declaring-class parameter-types exception-types flags) Positional factory function for class clojure.reflect.Method.Source flag-descriptorsvarThe Java access bitflags, along with their friendly names and the kinds of objects to which they can apply.Source map->ConstructorfunctionUsage: (map->Constructor m#) Factory function for class clojure.reflect.Constructor, taking a map of keywords to field values.Source map->FieldfunctionUsage: (map->Field m#) Factory function for class clojure.reflect.Field, taking a map of keywords to field values.Source map->MethodfunctionUsage: (map->Method m#) Factory function for class clojure.reflect.Method, taking a map of keywords to field values.Source reflectfunctionUsage: (reflect obj & options) 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.Added in Clojure version 1.3 Source type-reflectfunctionUsage: (type-reflect typeref & options) 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.
Added in Clojure version 1.3Source Copyright 2007-2025 by Rich Hickey
Logo & site design by Tom Hickey.
Clojure auto-documentation system by Tom Faulhaber. |
| You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |