CSC/ECE 517 Summer 2008/wiki1 3 jb: Difference between revisions
No edit summary |
No edit summary |
||
Line 45: | Line 45: | ||
[http://java.sun.com/docs/books/tutorial/reflect/index.html Pros and cons of reflection, written for Java but pretty generic]<br> | [http://java.sun.com/docs/books/tutorial/reflect/index.html Pros and cons of reflection, written for Java but pretty generic]<br> | ||
[http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html Using Java reflection]<br> | [http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html Using Java reflection]<br> | ||
[http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/package-summary.html Javadoc for java.lang.reflect]<br> | [http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Class.html Javadoc for the java.lang.Class class]<br> | ||
[http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/package-summary.html Javadoc for the java.lang.reflect package]<br> | |||
==Ruby Reflection Links== | ==Ruby Reflection Links== | ||
[http://phrogz.net/programmingruby/ospace.html Good overview of reflection in Ruby] | [http://phrogz.net/programmingruby/ospace.html Good overview of reflection in Ruby] |
Revision as of 22:18, 1 June 2008
This wiki will explore how reflection is implemented with both Ruby and Java, with the goal of showing which language's implementation makes it easier to write, easier to understand, and more efficient.
Basics
Reflection refers to the ability of a program to peer inside itself and observe the components that it is comprised of. Reflection, as supported in Object Oriented languages such Java and Ruby, provides facilities to query about the methods and attributes of a specified class, and to execute methods that are discovered at runtime. These two features of reflection in Java and Ruby will explored in detail below.
Reflection in Java
class MountainBike { boolean diskBrakes() { return true; } boolean knobbyTires() { return true; } public static void main (String argv[]) { Class c = MountainBike.class; Method methods[] = c.getDeclaredMethods(); for (int i=0; i<methods.length; i++) { System.out.println(methods[i].getName()); } } }
Reflection in Ruby
class MountainBike def diskBrakes return true end def knobbyTires return true end end mb = MountainBike.new puts MountainBike.public_instance_methods(false)
Conclusions
Java Reflection Links
Pros and cons of reflection, written for Java but pretty generic
Using Java reflection
Javadoc for the java.lang.Class class
Javadoc for the java.lang.reflect package