[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[[["\u003cp\u003eThe latest version of \u003ccode\u003eAbstractApiFuture\u003c/code\u003e is 2.46.1, with several other previous versions available for reference, including versions 2.45.0, 2.44.0, all the way to 2.1.2.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eAbstractApiFuture\u003c/code\u003e is an abstract implementation of \u003ccode\u003eApiFuture\u003c/code\u003e that mirrors \u003ccode\u003eAbstractFuture\u003c/code\u003e in Guava, extending \u003ccode\u003ejava.lang.Object\u003c/code\u003e and implementing \u003ccode\u003ecom.google.api.core.ApiFuture<V>\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe class provides core functionalities such as \u003ccode\u003eaddListener\u003c/code\u003e, \u003ccode\u003ecancel\u003c/code\u003e, \u003ccode\u003eget\u003c/code\u003e, \u003ccode\u003eisCancelled\u003c/code\u003e, \u003ccode\u003eisDone\u003c/code\u003e, \u003ccode\u003eset\u003c/code\u003e, and \u003ccode\u003esetException\u003c/code\u003e for managing asynchronous operations, along with inheritance methods from \u003ccode\u003eObject\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eAbstractApiFuture\u003c/code\u003e methods allow users to manage listeners, cancel operations, retrieve results with or without timeouts, and check the status of asynchronous tasks, while handling exceptions like \u003ccode\u003eInterruptedException\u003c/code\u003e, \u003ccode\u003eExecutionException\u003c/code\u003e, and \u003ccode\u003eTimeoutException\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eAbstractApiFuture\u003c/code\u003e class can be customized via the type parameter \u003ccode\u003eV\u003c/code\u003e which represents the value that can be set using \u003ccode\u003eset(V value)\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Class AbstractApiFuture<V> (2.52.0)\n\nVersion latestkeyboard_arrow_down\n\n- [2.52.0 (latest)](/java/docs/reference/api-common/latest/com.google.api.core.AbstractApiFuture)\n- [2.51.2](/java/docs/reference/api-common/2.51.2/com.google.api.core.AbstractApiFuture)\n- [2.50.0](/java/docs/reference/api-common/2.50.0/com.google.api.core.AbstractApiFuture)\n- [2.49.0](/java/docs/reference/api-common/2.49.0/com.google.api.core.AbstractApiFuture)\n- [2.48.0](/java/docs/reference/api-common/2.48.0/com.google.api.core.AbstractApiFuture)\n- [2.46.1](/java/docs/reference/api-common/2.46.1/com.google.api.core.AbstractApiFuture)\n- [2.45.0](/java/docs/reference/api-common/2.45.0/com.google.api.core.AbstractApiFuture)\n- [2.44.0](/java/docs/reference/api-common/2.44.0/com.google.api.core.AbstractApiFuture)\n- [2.43.0](/java/docs/reference/api-common/2.43.0/com.google.api.core.AbstractApiFuture)\n- [2.42.1](/java/docs/reference/api-common/2.42.1/com.google.api.core.AbstractApiFuture)\n- [2.41.0](/java/docs/reference/api-common/2.41.0/com.google.api.core.AbstractApiFuture)\n- [2.40.0](/java/docs/reference/api-common/2.40.0/com.google.api.core.AbstractApiFuture)\n- [2.38.0](/java/docs/reference/api-common/2.38.0/com.google.api.core.AbstractApiFuture)\n- [2.37.1](/java/docs/reference/api-common/2.37.1/com.google.api.core.AbstractApiFuture)\n- [2.36.0](/java/docs/reference/api-common/2.36.0/com.google.api.core.AbstractApiFuture)\n- [2.35.0](/java/docs/reference/api-common/2.35.0/com.google.api.core.AbstractApiFuture)\n- [2.34.0](/java/docs/reference/api-common/2.34.0/com.google.api.core.AbstractApiFuture)\n- [2.33.0](/java/docs/reference/api-common/2.33.0/com.google.api.core.AbstractApiFuture)\n- [2.32.0](/java/docs/reference/api-common/2.32.0/com.google.api.core.AbstractApiFuture)\n- [2.31.1](/java/docs/reference/api-common/2.31.1/com.google.api.core.AbstractApiFuture)\n- [2.30.0](/java/docs/reference/api-common/2.30.0/com.google.api.core.AbstractApiFuture)\n- [2.29.1](/java/docs/reference/api-common/2.29.1/com.google.api.core.AbstractApiFuture)\n- [2.28.0](/java/docs/reference/api-common/2.28.0/com.google.api.core.AbstractApiFuture)\n- [2.26.0](/java/docs/reference/api-common/2.26.0/com.google.api.core.AbstractApiFuture)\n- [2.25.0](/java/docs/reference/api-common/2.25.0/com.google.api.core.AbstractApiFuture)\n- [2.24.0](/java/docs/reference/api-common/2.24.0/com.google.api.core.AbstractApiFuture)\n- [2.22.0](/java/docs/reference/api-common/2.22.0/com.google.api.core.AbstractApiFuture)\n- [2.21.0](/java/docs/reference/api-common/2.21.0/com.google.api.core.AbstractApiFuture)\n- [2.20.0](/java/docs/reference/api-common/2.20.0/com.google.api.core.AbstractApiFuture)\n- [2.19.0](/java/docs/reference/api-common/2.19.0/com.google.api.core.AbstractApiFuture)\n- [2.18.0](/java/docs/reference/api-common/2.18.0/com.google.api.core.AbstractApiFuture)\n- [2.17.1](/java/docs/reference/api-common/2.17.1/com.google.api.core.AbstractApiFuture)\n- [2.16.0](/java/docs/reference/api-common/2.16.0/com.google.api.core.AbstractApiFuture)\n- [2.15.1](/java/docs/reference/api-common/2.15.1/com.google.api.core.AbstractApiFuture)\n- [2.14.1](/java/docs/reference/api-common/2.14.1/com.google.api.core.AbstractApiFuture)\n- [2.13.1](/java/docs/reference/api-common/2.13.1/com.google.api.core.AbstractApiFuture)\n- [2.7.0](/java/docs/reference/api-common/2.7.0/com.google.api.core.AbstractApiFuture)\n- [2.6.3](/java/docs/reference/api-common/2.6.3/com.google.api.core.AbstractApiFuture)\n- [2.5.0](/java/docs/reference/api-common/2.5.0/com.google.api.core.AbstractApiFuture)\n- [2.4.0](/java/docs/reference/api-common/2.4.0/com.google.api.core.AbstractApiFuture)\n- [2.3.1](/java/docs/reference/api-common/2.3.1/com.google.api.core.AbstractApiFuture)\n- [2.1.2](/java/docs/reference/api-common/2.1.2/com.google.api.core.AbstractApiFuture) \n\n public abstract class AbstractApiFuture\u003cV\u003e implements ApiFuture\u003cV\u003e\n\nAbstract implementation of ApiFuture that mirrors `AbstractFuture` in Guava. \n\nInheritance\n-----------\n\n[java.lang.Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \\\u003e AbstractApiFuture\\\u003cV\\\u003e \n\nImplements\n----------\n\ncom.google.api.core.ApiFuture\\\u003cV\\\u003e \n\nInherited Members\n-----------------\n\n[Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) \n[Object.equals(Object)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#equals-java.lang.Object-) \n[Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) \n[Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) \n[Object.hashCode()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#hashCode--) \n[Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) \n[Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) \n[Object.toString()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#toString--) \n[Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) \n[Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) \n[Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)\n\nConstructors\n------------\n\n### AbstractApiFuture()\n\n public AbstractApiFuture()\n\nMethods\n-------\n\n### addListener(Runnable listener, Executor executor)\n\n public void addListener(Runnable listener, Executor executor)\n\n### cancel(boolean mayInterruptIfRunning)\n\n public boolean cancel(boolean mayInterruptIfRunning)\n\n### get()\n\n public V get()\n\n### get(long timeout, TimeUnit unit)\n\n public V get(long timeout, TimeUnit unit)\n\n### interruptTask()\n\n protected void interruptTask()\n\n### isCancelled()\n\n public boolean isCancelled()\n\n### isDone()\n\n public boolean isDone()\n\n### set(V value)\n\n protected boolean set(V value)\n\n### setException(Throwable throwable)\n\n protected boolean setException(Throwable throwable)"]]