在Java中创建动态给定类的实例

Utk*_*tku 3 java class dynamic instance

我需要一个函数来在java中创建动态给定类的实例.

我找到了很多样本​​但是在所有样本中,要实例化的类在运行时之前就已知.

有用户定义的类:

class Student { //some code }
class Teacher { //some code }
class Course { //some code }
Run Code Online (Sandbox Code Playgroud)

我需要的是

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;

}
Run Code Online (Sandbox Code Playgroud)

我将如何使用

List<Student> students = MyFunction(Student);
List<Teacher> teachers = MyFunction(Teacher);
List<Course> courses = MyFunction(Course);
Run Code Online (Sandbox Code Playgroud)

希望有人帮忙.

这是我在Stackoverflow中的第一个问题,对由此带来的任何不便表示歉意.

Utku

4ca*_*tle 7

在Java 8中,您可以使用方法引用lambda表达式来动态创建类的实例,而无需使用反射.

public static <T> List<T> myFunction(Supplier<T> supplier) {
    return Stream.generate(supplier)
                 .limit(5)
                 .collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)

你会称之为:

List<Student> students = myFunction(Student::new);
Run Code Online (Sandbox Code Playgroud)

如果你不熟悉流,那么当务之急是:

public static <T> List<T> myFunction(Supplier<T> supplier) {
    int size = 5;
    List<T> list = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
        list.add(supplier.get());
    }
    return list;
}
Run Code Online (Sandbox Code Playgroud)