Movatterモバイル変換


[0]ホーム

URL:


Clojure

Clojure Core API Reference

Clojurev1.13.0 API
Namespaces
Other Versions
Clojure Home

API forclojure.reflect -Clojurev1.13.0 (in development)

byStuart Halloway

Full namespace name:clojure.reflect

Overview

Reflection on Host TypesAlpha - 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 classKey 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

Protocols



ClassResolver

Protocol
    Known implementations:clojure.lang.Fn, java.lang.ClassLoader

resolve-class

function
Usage: (resolve-class this name)
Given a class name, return that typeref's class bytes as an InputStream.
Source


Reflector

Protocol
Protocol for reflection implementers.
Known implementations:AsmReflector,JavaReflector

do-reflect

function
Usage: (do-reflect reflector typeref)
Source


TypeReference

Protocol
A TypeReference can be unambiguously converted to a type name onthe host platform.All typerefs are normalized into symbols. If you need tonormalize a typeref yourself, call typesym.
Known implementations:clojure.asm.Type, clojure.lang.Symbol, java.lang.Class

typename

function
Usage: (typename o)
Returns Java name as returned by ASM getClassName, e.g. byte[], java.lang.String[]
Source

Types



AsmReflector

type
    Fields:[class-resolver]
Protocols:Reflector
Interfaces:


Constructor

record
    Fields:[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


Field

record
    Fields:[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


JavaReflector

type
    Fields:[classloader]
Protocols:Reflector
Interfaces:


Method

record
    Fields:[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



->AsmReflector

function
Usage: (->AsmReflector class-resolver)
Positional factory function for class clojure.reflect.AsmReflector.
Source


->Constructor

function
Usage: (->Constructor name declaring-class parameter-types exception-types flags)
Positional factory function for class clojure.reflect.Constructor.
Source


->Field

function
Usage: (->Field name type declaring-class flags)
Positional factory function for class clojure.reflect.Field.
Source


->JavaReflector

function
Usage: (->JavaReflector classloader)
Positional factory function for class clojure.reflect.JavaReflector.
Source


->Method

function
Usage: (->Method name return-type declaring-class parameter-types exception-types flags)
Positional factory function for class clojure.reflect.Method.
Source


flag-descriptors

var
The Java access bitflags, along with their friendly names andthe kinds of objects to which they can apply.
Source


map->Constructor

function
Usage: (map->Constructor m#)
Factory function for class clojure.reflect.Constructor, taking a map of keywords to field values.
Source


map->Field

function
Usage: (map->Field m#)
Factory function for class clojure.reflect.Field, taking a map of keywords to field values.
Source


map->Method

function
Usage: (map->Method m#)
Factory function for class clojure.reflect.Method, taking a map of keywords to field values.
Source


reflect

function
Usage: (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-reflect

function
Usage: (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.3
Source
Copyright 2007-2025 by Rich Hickey
Logo & site design byTom Hickey.
Clojure auto-documentation system by Tom Faulhaber.

[8]ページ先頭

©2009-2025 Movatter.jp