199:
88:
28:
mechanism that is completely decoupled from the object whose structure is being introspected. This is as opposed to traditional reflection, for example in
240:
40:
182:
25:
264:
259:
117:
112:
233:
102:
78:
29:
168:
154:
226:
214:
68:
A mirror system can operate on remote code, since it is not coupled with a particular machine.
51:
Decoupling the reflection mechanism from the objects themselves allows for a few benefits:
17:
8:
55:
The object's interface is not polluted, so there is no danger of breaking reflection by
56:
206:
65:
The mirror system can be removed entirely (potentially allowing for optimizations).
210:
253:
32:, where one introspects an object using methods from the object itself (e.g.
98:
198:
143:"Meta-level Facilities of Object-Oriented Programming languages"
142:
169:"Rubinius/Mirror.rb at master · rubinius/Rubinius"
43:, stratification and ontological correspondence.
251:
234:
72:
241:
227:
252:
62:There can be different mirror systems.
183:"Environment, Universes, and Mirrors"
193:
39:Mirrors adhere to the qualities of
13:
14:
276:
197:
175:
161:
147:
141:Gilad Bracha and David Ungar,
135:
1:
128:
213:. You can help Knowledge by
155:"Frequently Asked Questions"
7:
46:
10:
281:
192:
73:Languages that use mirrors
105:implementation), via its
107:Rubinius::Mirror.reflect
265:Computer science stubs
260:Programming paradigms
59:a reflective method.
18:computer programming
222:
221:
272:
243:
236:
229:
207:computer science
201:
194:
187:
186:
179:
173:
172:
165:
159:
158:
151:
145:
139:
35:
280:
279:
275:
274:
273:
271:
270:
269:
250:
249:
248:
247:
191:
190:
181:
180:
176:
167:
166:
162:
153:
152:
148:
140:
136:
131:
75:
49:
33:
12:
11:
5:
278:
268:
267:
262:
246:
245:
238:
231:
223:
220:
219:
202:
189:
188:
174:
160:
146:
133:
132:
130:
127:
126:
125:
115:
110:
96:
86:
74:
71:
70:
69:
66:
63:
60:
48:
45:
9:
6:
4:
3:
2:
277:
266:
263:
261:
258:
257:
255:
244:
239:
237:
232:
230:
225:
224:
218:
216:
212:
209:article is a
208:
203:
200:
196:
195:
184:
178:
170:
164:
156:
150:
144:
138:
134:
123:
119:
116:
114:
111:
108:
104:
100:
97:
94:
90:
87:
84:
80:
77:
76:
67:
64:
61:
58:
54:
53:
52:
44:
42:
41:encapsulation
37:
31:
27:
23:
19:
215:expanding it
204:
177:
163:
149:
137:
121:
106:
92:
82:
50:
38:
21:
15:
93:std::mirror
254:Categories
129:References
120:, via its
91:, via its
81:, via its
57:overriding
34:getClass()
26:reflection
124:function.
85:function.
99:Rubinius
47:Benefits
122:reflect
109:method.
95:module.
83:reflect
22:mirror
205:This
118:Swift
113:Scala
24:is a
211:stub
103:Ruby
89:Inko
79:Dart
30:Java
20:, a
36:).
16:In
256::
242:e
235:t
228:v
217:.
185:.
171:.
157:.
101:(
Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.