鴻飛

导航

 

 

源码(@TargetApi(Build.VERSION_CODES.KITKAT))

public List<T> test1() {
        String sql = "selxe xxxxxxxxxxx";
        try (Cursor cursor = dbManager.getReadableDatabase().rawQuery(sql, null)) {
            List<T> lst = new ArrayList<>();
            while (cursor.moveToNext()) {
                lst.add(findEntity(cursor));
            }
            return lst;
        }
    }

    public List<T> test2() {
        String sql = "selxe xxxxxxxxxxx";
        Cursor cursor = dbManager.getReadableDatabase().rawQuery(sql, null);
        try {
            List<T> lst = new ArrayList<>();
            while (cursor.moveToNext()) {
                lst.add(findEntity(cursor));
            }
            return lst;
        } finally {
            cursor.close();
        }
    }
View Code

反编译后

public List<T> test1()
  {
    Cursor localCursor = this.dbManager.getReadableDatabase().rawQuery("selxe xxxxxxxxxxx", null);
    try
    {
      localArrayList = new ArrayList();
      while (localCursor.moveToNext())
        localArrayList.add(findEntity(localCursor));
    }
    catch (Throwable localThrowable3)
    {
      ArrayList localArrayList;
      Object localObject1;
      try
      {
        throw localThrowable3;
      }
      finally
      {
        localThrowable1 = localThrowable3;
      }
      if ((localCursor == null) || (localThrowable1 != null));
      while (true)
      {
        try
        {
          localCursor.close();
          throw localObject1;
          if ((localCursor == null) || (0 != 0))
            try
            {
              localCursor.close();
              return localArrayList;
            }
            catch (Throwable localThrowable4)
            {
              null.addSuppressed(localThrowable4);
              return localArrayList;
            }
          localCursor.close();
          return localArrayList;
        }
        catch (Throwable localThrowable2)
        {
          localThrowable1.addSuppressed(localThrowable2);
          continue;
        }
        localCursor.close();
      }
    }
    finally
    {
      while (true)
        Throwable localThrowable1 = null;
    }
  }

  public List<T> test2()
  {
    Cursor localCursor = this.dbManager.getReadableDatabase().rawQuery("selxe xxxxxxxxxxx", null);
    ArrayList localArrayList;
    try
    {
      localArrayList = new ArrayList();
      while (localCursor.moveToNext())
        localArrayList.add(findEntity(localCursor));
    }
    finally
    {
      localCursor.close();
    }
    localCursor.close();
    return localArrayList;
  }
View Code

 

The try-with-resources statement is a try statement that declares one or more resources. A resource is an object that must be closed after the program is finished with it. The try-with-resources statement ensures that each resource is closed at the end of the statement. Any object that implements java.lang.AutoCloseable, which includes all objects which implement java.io.Closeable, can be used as a resource.

参考:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

 

posted on 2017-08-21 00:12  鴻飛  阅读(153)  评论(0编辑  收藏  举报