Class<?> arrayListClass = Class.forName("java.util.ArrayList");
Class<?> arrayListClass = Class.forName("java.util.ArrayList");
Method addMethod = arrayListClass.getDeclaredMethod("add", Object.class);
ArrayList<Object> arrayList = new ArrayList<>();
addMethod.invoke(arrayList, "Hello");
Class<?> arrayListClass = Class.forName("java.util.ArrayList");
Field elementDataField = arrayListClass.getDeclaredField("elementData");
ArrayList<Object> arrayList = new ArrayList<>();
Object[] elementData = (Object[]) elementDataField.get(arrayList);
elementDataField.set(arrayList, new Object[20]);
Class<?> arrayListClass = Class.forName("java.util.ArrayList");
ArrayList<Object> arrayList = (ArrayList<Object>) arrayListClass.newInstance();
Class<?> myClass = Class.forName("com.myapp.MyClass");
MyClassAnnotation classAnnotation = myClass.getAnnotation(MyClassAnnotation.class);
Method myMethod = myClass.getDeclaredMethod("myMethod");
MyMethodAnnotation methodAnnotation = myMethod.getAnnotation(MyMethodAnnotation.class);
Field myField = myClass.getDeclaredField("myField");
MyFieldAnnotation fieldAnnotation = myField.getAnnotation(MyFieldAnnotation.class);
methodAnnotation.setValue("New Value");