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 {
^