检查ArrayList以获取对象的实例
我有一个java方法,应该检查ArrayList并检查它是否包含给定类的实例。 我需要传递方法类型的类来检查作为参数,如果List包含给定类型的对象,则返回它。
这可以实现吗?
public static T find(Collection> arrayList, Class clazz) { for(Object o : arrayList) { if (o != null && o.getClass() == clazz) { return clazz.cast(o); } } return null; }
并打电话
String match = find(myArrayList, String.class);
public static T getFirstElementOfTypeIn( List> list, Class clazz ) { for ( Object o : list ) { if ( clazz.isAssignableFrom( o.getClass() ) ) { return clazz.cast( o ); } } return null; }
如果您使用的是Java 8,则可以执行以下操作:
public Optional getInstanceOf(Class clazz, Collection> collection) { return (Optional ) collection.stream() .filter(e -> clazz.isInstance(e.getClass())) .findFirst(); }
如果以前从未使用过,请查看Optional
文档。 实际上这比返回null更好。
您可以对列表进行迭代并测试每个元素
Class> zz = String.class; for (Object obj : list) { if (zz.isInstance(obj)) { System.out.println("Yes it is a string"); } }
请注意, isInstance
还会捕获子类。 否则请看Bela的回答。