检查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的回答。