Package org.eclipse.swt.graphics

# Class Resource

java.lang.Object
org.eclipse.swt.graphics.Resource

Direct Known Subclasses:
  `Color`, `Cursor`, `Font`, `GC`, `Image`, `Path`, `Pattern`, `Region`, `TextLayout`, `Transform`

public abstract class Resource extends Object
This class is the abstract superclass of all graphics resource objects. Resources created by the application must be disposed.

IMPORTANT: This class is intended to be subclassed only within the SWT implementation. However, it has not been marked final to allow those outside of the SWT development team to implement patched versions of the class in order to get around specific limitations in advance of when those limitations can be addressed by the team. Any class built using subclassing to access the internals of this class will likely fail to compile or run between releases and may be strongly platform specific. Subclassing should not be attempted without an intimate and detailed understanding of the workings of the hierarchy. No support is provided for user-written classes which are implemented as subclasses of this class.

Since:
  3.1
See Also:
  - `dispose()`
  - `isDisposed()`
  - Sample code and further information

## Constructor Summary

Constructors
Constructor
Description
`Resource()`

## Method Summary

Modifier and Type
Method
Description
`void`
`dispose()`
Disposes of the operating system resources associated with this resource.
`Device`
`getDevice()`
Returns the `Device` where this resource was created.
`abstract boolean`
`isDisposed()`
Returns `true` if the resource has been disposed, and `false` otherwise.
`static void`
`setNonDisposeHandler(Consumer<Error> reporter)`
Enables detection of Resource objects for which `dispose()` wasn't called, which means a leak of native memory and/or OS resources.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Resource

public Resource()

## Method Details

### dispose

public void dispose()
Disposes of the operating system resources associated with this resource. Applications must dispose of all resources which they allocate. This method does nothing if the resource is already disposed.

### getDevice

public Device getDevice()
Returns the `Device` where this resource was created.

Returns:
  `Device` the device of the receiver
Since:
  3.2

### isDisposed

public abstract boolean isDisposed()
Returns `true` if the resource has been disposed, and `false` otherwise.

This method gets the dispose state for the resource. When a resource has been disposed, it is an error to invoke any other method (except `dispose()`) using the resource.

Returns:
  `true` when the resource is disposed and `false` otherwise

### setNonDisposeHandler

public static void setNonDisposeHandler(Consumer<Error> reporter)
Enables detection of Resource objects for which `dispose()` wasn't called, which means a leak of native memory and/or OS resources. WARNING: the reporter will be called from a different thread. Do not block it and do not throw any exceptions. It's best to queue the errors for some other worker to process.

Parameters:
  `reporter` - object used to report detected errors. Use null to disable tracking. Setting a new reporter has an immediate effect.
Since:
  3.116