检查ArrayList以获取对象的实例

Dan*_*nny 6 java arraylist instanceof

我有一个java方法,应该检查ArrayList并检查它是否包含给定类的实例.我需要传递方法类型的类来检查作为参数,如果List包含给定类型的对象,则返回它.

这可以实现吗?

Bal*_*a R 18

public static <T> T find(Collection<?> arrayList, Class<T> clazz)
{
    for(Object o : arrayList)
    {
        if (o != null && o.getClass() == clazz)
        {
            return clazz.cast(o);
        }
    }

    return null;    
}
Run Code Online (Sandbox Code Playgroud)

并打电话

String match = find(myArrayList, String.class);
Run Code Online (Sandbox Code Playgroud)

  • +1要避免未经检查的强制转换,您可以使用`clazz.cast(o)`. (3认同)
  • 你需要使用`Class.isAssignableFrom`来处理子类,方法也应该采用`Collection`而不是`ArrayList`(即程序到接口).还要考虑使用Java推荐的编码标准,使方法名称以小写字母开头. (3认同)

jim*_*imr 5

public static <T> T getFirstElementOfTypeIn( List<?> list, Class<T> clazz )
{
  for ( Object o : list )
  {
    if ( clazz.isAssignableFrom( o.getClass() ) )
    {
      return clazz.cast( o );
    }
  }
  return null;
}
Run Code Online (Sandbox Code Playgroud)