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
在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)