[英]How to pass class type as an parameter to function?
I have four classes: A, B, C, D. B, C, D extends A. I have a list - List<A>
that contains all kinds of objects, and I want to build a function that gets one of the classes as parameter and prints from the list all the objects that belongs to the class.我有四个类:A、B、C、D.B、C、D 扩展 A。我有一个列表 - List<A>
包含各种对象,我想构建一个 ZC1C425268E68385D1AB507 类中的一个作为参数并从列表中打印属于 class 的所有对象。
public static void printElements(List<A> list, Class<? extends A> type) {
for (A element : list) {
if (type.isAssignableFrom(element.getClass())) {
System.out.println(element);
}
}
}
The method isAssignableFrom
can be used to determine if the Class received as a parameter is the same class or a superclass of each element of the list. isAssignableFrom
方法可用于确定作为参数接收的 Class 是相同的 class 还是列表中每个元素的超类。
The Class<? extends A>
Class<? extends A>
Class<? extends A>
is used to only allow types that are of type A or a subclass that are the type of elements allowed in the list. Class<? extends A>
用于仅允许类型为 A 的类型或列表中允许的元素类型的子类。
You could do something like this:你可以这样做:
List<A> list = (...);
public static void print(Class klass) {
for(A a : list) {
if(klass.isInstance(a)) {
System.out.println(a);
}
}
}
To use it:要使用它:
print(C.class);
Or或者
C c = new C();
print(c.getClass());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.