Method name is myMethod Declaring class is Target Arg 0: int Exc 0: java.lang.NullPointerException Exc 1: java.io.IOException Return type is int Access flags are 0x1 Method name is myMethod Declaring class is SuperTarget Arg 0: float Return type is int Access flags are 0x1 Method name is myNoargMethod Declaring class is Target Return type is void Access flags are 0x9 Method name is myMethod Declaring class is Target Arg 0: [Ljava.lang.String; Arg 1: float Arg 2: char Return type is int Access flags are 0x1 SuperTarget constructor ()V Target constructor ()V Before, float is 3.1415925 myMethod: hi there 3.1415925 ✔ ! Result of invoke: 7 Calling no-arg void-return method myNoargMethod ()V throwingMethod Invoke got expected exception: java.lang.reflect.InvocationTargetException java.lang.NullPointerException: gratuitous throw! Field name is string1 Declaring class is Target Field type is java.lang.String Access flags are 0x1 string1 value is 'hey' ::: hey:yo:there string1 value is now 'a new string' ::: a new string:yo:there got expected illegal obj store exc got the other expected access exc got expected arg exc pubLong initial value is 1122334455667788 pubLong new value is 9988776655443322 Field name is superInt Declaring class is SuperTarget Field type is int Access flags are 0x1 superInt value is 1010101 superInt boxed is 1010101 superInt value is now 20202 superInt value (from short) is now 30303 superInt value is now 40404 got expected long->int failure got expected long->int failure got expected string->int failure got expected int->short failure Field name is superClassInt Declaring class is SuperTarget Field type is int Access flags are 0x9 superClassInt value is 1010102 Field name is staticDouble Declaring class is Target Field type is double Access flags are 0x9 staticDoubleVal value is 3.3 got expected double->long failure as expected: aPrivateInt not found Field name is constantString Declaring class is Target Field type is java.lang.String Access flags are 0x19 Constant test value is a constant string Field name is cantTouchThis Declaring class is Target Field type is int Access flags are 0x11 cantTouchThis is 77 as expected: set-final throws exception cantTouchThis is still 77 public final int Target.cantTouchThis accessible=false public final int Target.cantTouchThis accessible=true cantTouchThis is now 87 cantTouchThis is now 88 cons modifiers=1 SuperTarget constructor ()V Target constructor (IF)V : ii=7 ff=3.3333 myMethod (I)I arg=17 anInt=7 got expected exception for Class.newInstance got expected exception for Constructor.newInstance ReflectTest done! public method private static void java.util.Collections.swap(java.lang.Object[],int,int) accessible=false private static void java.util.Collections.swap(java.lang.Object[],int,int) accessible=true checkType invoking null checkType got expected exception calling const-class FieldNoisyInitUser.class called const-class FieldNoisyInitUser.class got fields got field FieldNoisyInitUser is initializing read field value FieldNoisyInit is initializing calling const-class MethodNoisyInitUser.class called const-class MethodNoisyInitUser.class got methods got method MethodNoisyInitUser is initializing invoked method MethodNoisyInit is initializing generic field: java.util.List<java.lang.String> generic method fancyMethod params='[1] java.util.ArrayList<java.lang.String>' ret='java.util.Map<java.lang.Integer, java.lang.String>' generic ctor Main params='[1] java.util.ArrayList<java.lang.Integer>' fields are unique fields are .equals methods are unique methods are .equals type1 is a ParameterizedType type2 is a ParameterizedType type3 is a ParameterizedType type1(java.util.Set<java.lang.String>) equals type2(java.util.Set<java.lang.String>) type1(java.util.Set<java.lang.String>) equals type3(java.util.Set<java.lang.String>) type1(java.util.Set<java.lang.String>) hashCode equals type2(java.util.Set<java.lang.String>) hashCode type1(java.util.Set<java.lang.String>) hashCode equals type3(java.util.Set<java.lang.String>) hashCode type1 is a GenericArrayType type2 is a GenericArrayType type3 is a GenericArrayType type1(T[]) equals type2(T[]) type1(T[]) equals type3(T[]) type1(T[]) hashCode equals type2(T[]) hashCode type1(T[]) hashCode equals type3(T[]) hashCode