Search code examples
javaclassdynamicinstance

Create instances of dynamically given classes in Java


I need a function to create instances of a dynamically given class in java.

I had found many samples but in all of them, the class to be instantiated was known before runtime.

There are user defined classes:

class Student { //some code }
class Teacher { //some code }
class Course { //some code }

What I need is

List<class> MyFunction(<class>) {

  List<class> items = new ArrayList<class>();

  for(int i = 0; i < 5; i++) {

    create_a_new_class_instance;

    items.add(new_created_instance);
  }

  return items;

}

How will I use

List<Student> students = MyFunction(Student);
List<Teacher> teachers = MyFunction(Teacher);
List<Course> courses = MyFunction(Course);

Hope someone helps.

This is my first question in Stackoverflow, sorry for any inconvenience.

Utku


Solution

  • Assuming that the classes supplied to MyFunction have a default constructor, a simple implementation would be

      public static <T> List<T> MyFunction(Class<T> clazz) {
        if (clazz == null) {
          return null;
        }
        T item;
        List<T> items = new ArrayList<T>();
        for (int i = 0; i < 5; i++) {
          try {
            item = clazz.newInstance();
          } catch (Exception e) {
            item = null;
          }
          if (item != null) {
            items.add(item);
          }
        }
        return items;
      }
    

    and the above method could be called like

    List<Student> student = MyFunction(Student.class);
    

    For increased transparency, the exception thrown inside the method could be handled in another way (e.g., added to the method signature).