DOC PREVIEW
Penn CIT 597 - Reflection

This preview shows page 1-2-22-23 out of 23 pages.

Save
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Reflection Jan 14 2019 Java looking at Java One of the unusual capabilities of Java is that a program can examine itself You can determine the class of an object You can find out all about a class its access modifiers superclass fields constructors and methods You can find out what is in an interface Even if you don t know the names of things when you write the program you can Create an instance of a class Get and set instance variables Invoke a method on an object Create and manipulate arrays I guess this is called reflection because it s as if a Java program could look in a mirror at itself 2 What is reflection for In normal programs you don t need reflection You do need reflection if you are working with programs that process programs Typical examples A class browser A debugger A GUI builder An IDE such as Eclipse NetBeans or IntelliJ IDEA A program to grade student programs 3 IDEs Most Java IDEs are themselves Java programs what can they do Compile a program easy just a system call Load in your program after compilation Find out what classes you have and what their constructors and methods are Execute your main method Create objects for you even without running your main method Send messages to objects and display the results All these capabilities except compilation are done with reflection 4 The Class class To find out about a class first get its Class object If you have an object obj you can get its class object with Class c obj getClass If you know the name of a class say Button at compile time you can get its class object with Class c Button class If you know the name of a class at run time say in a String variable str you can get its class object with Class c Class forName str You can get the class object for the superclass of a Class c with Class sup c getSuperclass 5 Getting the class name If you have a class object c you can get the name of the class with c getName getName returns the fully qualified name that is Class c Button class String s c getName System out println s will print java awt Button Class Class and its methods are in java lang which is always imported and available 6 Getting all the superclasses getSuperclass returns a Class object or null if you call it on Object which has no superclass The following code is from the Sun tutorial static void printSuperclasses Object o Class subclass o getClass Class superclass subclass getSuperclass while superclass null String className superclass getName System out println className subclass superclass superclass subclass getSuperclass 7 Getting the class modifiers I A Class object has an instance method getModifiers that returns an int To decipher the int result we need static methods of the Modifier class which is in java lang reflect so import java lang reflect Now we can do things like if Modifier isPublic m System out println public 8 Getting the class modifiers II Modifier contains these methods among others public public public public public public public static static static static static static static boolean isAbstract int mod boolean isFinal int mod boolean isInterface int mod boolean isPrivate int mod boolean isProtected int mod boolean isPublic int mod String toString int mod This will return a string such as public final synchronized strictfp 9 Getting interfaces A class can implement zero or more interfaces getInterfaces returns an array of Class objects More code from Sun These are the interfaces implemented by the class static void printInterfaceNames Object o Class c o getClass Class theInterfaces c getInterfaces for int i 0 i theInterfaces length i String interfaceName theInterfaces i getName System out println interfaceName Note that zero length arrays are perfectly legal in Java 10 Examining classes and interfaces The class Class represents both classes and interfaces To determine if a given Class object c is an interface use c isInterface To find out more about a class object use getModifiers getFields fields instance variables getConstructors getMethods isArray 11 Getting Fields public Field getFields throws SecurityException Returns an array of public Fields variables The length of the array may be zero The fields are not returned in any particular order Both locally defined and inherited instance variables are returned but not static variables public Field getField String name throws NoSuchFieldException SecurityException Returns the named public Field If no immediate field is found the superclasses and interfaces are searched recursively 12 Using Fields I If f is a Field object then f getName returns the simple name of the field f getType returns the type Class of the field f getModifiers returns the Modifiers of the field f toString returns a String containing access modifiers the type and the fully qualified field name Example public java lang String Person name f getDeclaringClass returns the Class in which this field is declared 13 Using Fields II The values of the fields of an object obj may be accessed with boolean f getBoolean obj int f getInt obj double f getDouble obj etc return the value of the field f of the object obj assuming it is that type or can be widened to that type Object f get obj returns the value of the field assuming it is an Object If the field is a primitive type it is wrapped to an Object void f set obj value void f setBoolean obj bool void f setInt obj i void f getDouble obj d etc set the value of a field 14 Constructors If c is a Constructor object then c getName returns the name of the constructor as a String this is the same as the name of the class c getDeclaringClass returns the Class in which this constructor is declared c getModifiers returns the Modifiers of the constructor c getParameterTypes returns an array of Class objects in declaration order c newInstance Object initargs creates and returns a new instance of class c as if the constructor had been called Arguments that should be primitives are automatically unwrapped as needed 15 Methods public Method getMethods throws SecurityException Returns an array of Method objects These are the public member methods of the class or interface including inherited methods The methods are returned in no particular order public Method getMethod String name Class parameterTypes throws NoSuchMethodException SecurityException 16 Method methods I getDeclaringClass Returns the Class object representing the class or interface that declares the method represented by this Method object getName Returns the name of the


View Full Document

Penn CIT 597 - Reflection

Documents in this Course
DOM

DOM

21 pages

More DOM

More DOM

11 pages

Rails

Rails

33 pages

DOM

DOM

21 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

RELAX NG

RELAX NG

31 pages

Rake

Rake

12 pages

Ruby

Ruby

58 pages

DOM

DOM

21 pages

Tomcat

Tomcat

16 pages

DOM

DOM

21 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Html

Html

27 pages

DOM

DOM

22 pages

RELAX NG

RELAX NG

30 pages

Servlets

Servlets

28 pages

XHTML

XHTML

13 pages

DOM

DOM

21 pages

DOM

DOM

21 pages

Servlets

Servlets

26 pages

More CSS

More CSS

18 pages

Servlets

Servlets

29 pages

Logging

Logging

17 pages

Load more
Download Reflection
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Reflection and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Reflection and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?