Package com.sun.jna

# Interface Callback

All Known Subinterfaces:
  `CallbackProxy`, `Carbon.EventHandlerProcPtr`, `Ddeml.DdeCallback`, `DispatchVTable.AddRefCallback`, `DispatchVTable.GetIDsOfNamesCallback`, `DispatchVTable.GetTypeInfoCallback`, `DispatchVTable.GetTypeInfoCountCallback`, `DispatchVTable.InvokeCallback`, `DispatchVTable.QueryInterfaceCallback`, `DispatchVTable.ReleaseCallback`, `DLLCallback`, `StdCallLibrary.StdCallCallback`, `UnknownVTable.AddRefCallback`, `UnknownVTable.QueryInterfaceCallback`, `UnknownVTable.ReleaseCallback`, `WinBase.EnumResNameProc`, `WinBase.EnumResTypeProc`, `WinBase.FE_EXPORT_FUNC`, `WinBase.FE_IMPORT_FUNC`, `WinBase.THREAD_START_ROUTINE`, `WinCrypt.CryptGetSignerCertificateCallback`, `WinNT.OVERLAPPED_COMPLETION_ROUTINE`, `WinRas.RasDialFunc2`, `Winsvc.Handler`, `Winsvc.HandlerEx`, `Winsvc.SERVICE_MAIN_FUNCTION`, `WinUser.HOOKPROC`, `WinUser.LowLevelKeyboardProc`, `WinUser.LowLevelMouseProc`, `WinUser.MONITORENUMPROC`, `WinUser.WindowProc`, `WinUser.WinEventProc`, `WinUser.WNDENUMPROC`, `X11.XErrorHandler`

All Known Implementing Classes:
  `DdemlUtil.DdeAdapter`

public interface Callback
All callback definitions must derive from this interface. Any derived interfaces must define a single public method (which may not be named "hashCode", "equals", or "toString"), or one public method named "callback". You are responsible for deregistering your callback (if necessary). If native code attempts to call a callback which has been GC'd, you will likely crash the VM. If there is no method to deregister the callback (e.g. `atexit` in the C library), you must ensure that you always keep a live reference to the callback object.

A callback should generally never throw an exception, since it doesn't necessarily have an encompassing Java environment to catch it. Any exceptions thrown will be passed to the default callback exception handler.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static interface`
  `Callback.UncaughtExceptionHandler`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final List<String>`
  `FORBIDDEN_NAMES`
  These method names may not be used for a callback method.
  `static final String`
  `METHOD_NAME`
  You must use this method name if your callback interface has multiple public methods.

- ## Field Details

  - ### METHOD_NAME

    static final String METHOD_NAME
    You must use this method name if your callback interface has multiple public methods. Typically a callback will have only one such method, in which case any method name may be used, with the exception of those in `FORBIDDEN_NAMES`.
    See Also:
      - Constant Field Values

  - ### FORBIDDEN_NAMES

    static final List<String> FORBIDDEN_NAMES
    These method names may not be used for a callback method.