<AWT Dev> awt-related types that are candidates to be FunctionalInterfaces in JDK 8
Artem Ananiev
artem.ananiev at oracle.com
Wed Feb 6 06:55:32 PST 2013
Hi, Joe,
could you provide more information about the FunctionalInterface
annotation, please? In particular, what are benefits of adding and not
adding it to certain API interfaces?
The list of candidate types below looks reasonable with a few exceptions:
- SystemTrayPeer is a peer interface that is not meant to be used nor
implemented by applications.
- Transparency is mostly a tagging interface and a container for 3
constants, I wouldn't expect it in lambda expressions.
- PrintGraphics has a single implementation, and I don't expect more to
appear.
- Composite and Stroke are Java2D classes, you would better ask 2D
experts about them. To me, both are internal JDK interfaces that are of
no interest for applications.
Thanks,
Artem
On 2/6/2013 2:41 AM, Joe Darcy wrote:
> Hello,
>
> As part of Project Lambda, a FunctionalInterface annotation type was
> added to the platform to mark interfaces that are intended to be used in
> lambda expressions. I've sent out a code review request to add this
> annotation to types in the core-libs area [1].
>
> To assist the awt team in adding analogous annotations to your types,
> the list of candidate types in for awt-related classes in java.* and
> javax.* is given below. I recommend sub-tasks of JDK-8005297 "Add
> FunctionalInterface support to the platform" be used to track the work
> of adding @FunctionalInterface annotations to awt types.
>
> Thanks,
>
> -Joe
>
> [1]
> http://mail.openjdk.java.net/pipermail/core-libs-dev/2013-February/014292.html
>
>
> jdk/src/share/classes/java/awt/Transparency.java:36: Note: Candidate
> functional interface
> public interface Transparency {
> ^
> jdk/src/share/classes/java/awt/EventFilter.java:27: Note: Candidate
> functional interface
> interface EventFilter {
> ^
> jdk/src/share/classes/java/awt/event/AdjustmentListener.java:36: Note:
> Candidate functional interface
> public interface AdjustmentListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/MouseWheelListener.java:51: Note:
> Candidate functional interface
> public interface MouseWheelListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/TextListener.java:46: Note:
> Candidate functional interface
> public interface TextListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/WindowStateListener.java:50: Note:
> Candidate functional interface
> public interface WindowStateListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/ItemListener.java:47: Note:
> Candidate functional interface
> public interface ItemListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/HierarchyListener.java:49: Note:
> Candidate functional interface
> public interface HierarchyListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/AWTEventListener.java:55: Note:
> Candidate functional interface
> public interface AWTEventListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/event/ActionListener.java:45: Note:
> Candidate functional interface
> public interface ActionListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/print/Printable.java:105: Note: Candidate
> functional interface
> public interface Printable {
> ^
> jdk/src/share/classes/java/awt/print/PrinterGraphics.java:36: Note:
> Candidate functional interface
> public interface PrinterGraphics {
> ^
> jdk/src/share/classes/java/awt/KeyEventPostProcessor.java:57: Note:
> Candidate functional interface
> public interface KeyEventPostProcessor {
> ^
> jdk/src/share/classes/java/awt/peer/SystemTrayPeer.java:35: Note:
> Candidate functional interface
> public interface SystemTrayPeer {
> ^
> jdk/src/share/classes/java/awt/ActiveEvent.java:52: Note: Candidate
> functional interface
> public interface ActiveEvent {
> ^
> jdk/src/share/classes/java/awt/image/ImageObserver.java:40: Note:
> Candidate functional interface
> public interface ImageObserver {
> ^
> jdk/src/share/classes/java/awt/image/renderable/RenderedImageFactory.java:47:
> Note: Candidate functional interface
> public interface RenderedImageFactory {
> ^
> jdk/src/share/classes/java/awt/image/TileObserver.java:39: Note:
> Candidate functional interface
> public interface TileObserver {
> ^
> jdk/src/share/classes/java/awt/dnd/DragSourceMotionListener.java:53:
> Note: Candidate functional interface
> public interface DragSourceMotionListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/dnd/DragGestureListener.java:48: Note:
> Candidate functional interface
> public interface DragGestureListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/PrintGraphics.java:33: Note: Candidate
> functional interface
> public interface PrintGraphics {
> ^
> jdk/src/share/classes/java/awt/Stroke.java:58: Note: Candidate
> functional interface
> public interface Stroke {
> ^
> jdk/src/share/classes/java/awt/datatransfer/ClipboardOwner.java:44:
> Note: Candidate functional interface
> public interface ClipboardOwner {
> ^
> jdk/src/share/classes/java/awt/datatransfer/FlavorListener.java:36:
> Note: Candidate functional interface
> public interface FlavorListener extends EventListener {
> ^
> jdk/src/share/classes/java/awt/KeyEventDispatcher.java:54: Note:
> Candidate functional interface
> public interface KeyEventDispatcher {
> ^
> jdk/src/share/classes/java/awt/Container.java:2440: Note: Candidate
> functional interface
> static interface EventTargetFilter {
> ^
> jdk/src/share/classes/java/awt/Composite.java:68: Note: Candidate
> functional interface
> public interface Composite {
> ^
> jdk/src/share/classes/java/awt/Conditional.java:35: Note: Candidate
> functional interface
> interface Conditional {
> ^
>
More information about the awt-dev
mailing list