JavaRush /ื‘ืœื•ื’ Java /Random-HE /ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื
minuteman
ืจึธืžึธื”

ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื

ืคื•ืจืกื ื‘ืงื‘ื•ืฆื”
ื‘ื‘ืงืฉื” ืืœ ืชื˜ืจืœ ื™ื•ืชืจ ืžื“ื™, ืื ื™ ืจืง ืžืชื—ื™ืœ ืœืชืจื’ื ืžืืžืจื™ื ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื - 1

ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื - ืžื•ืฉื’ื™ื ืฉื ื•ืฆืจื• ืžื—ื“ืฉ ื‘-Java 8

ื›ืœ ืžืคืชื— Java ื‘ืขื•ืœื ื”ืฉืชืžืฉ ื‘ืื—ื“ ืžื”ืžืžืฉืงื™ื ื”ื‘ืื™ื ืœืคื—ื•ืช ืคืขื ืื—ืช: java.lang.Runnable, java.awt.event.ActionListener, java.util.Comparator, java.util.concurrent.Callable. ืœื›ื•ืœื ื™ืฉ ื“ื‘ืจ ืื—ื“ ื‘ืžืฉื•ืชืฃ, ื•ื–ื” ืฉืœื›ื•ืœื ื™ืฉ ืจืง ืฉื™ื˜ื” ืื—ืช. ื™ืฉื ื ืžืžืฉืงื™ื ืจื‘ื™ื ืื—ืจื™ื ื›ืืœื” ื‘-JDK, ื›ืžื• ื’ื ืื—ืจื™ื ืฉื ื•ืฆืจื• ืขืœ ื™ื“ื™ ืžืคืชื—ื™ Java. ืžืžืฉืงื™ื ืืœื• ื™ื“ื•ืขื™ื ื’ื ื‘ืฉื Single Abstract Method interfaces(ืžืžืฉืงื™ SAM). ืื—ืช ื”ื“ืจื›ื™ื ื”ืคื•ืคื•ืœืจื™ื•ืช ื‘ื™ื•ืชืจ ืœื”ืฉืชืžืฉ ื‘ืžืžืฉืงื™ื ืืœื” ื”ื™ื ืœื™ืฆื•ืจ ืžื—ืœืงื•ืช ืคื ื™ืžื™ื•ืช ืื ื•ื ื™ืžื™ื•ืช ื”ืžืฉืชืžืฉื•ืช ื‘ืžืžืฉืงื™ื ืืœื”, ื›ืžื• ื‘ื“ื•ื’ืžื” ื”ื‘ืื”:
public class AnonymousInnerClassTest {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println("A thread created and running...");
            }
        }).start();
    }
}
ื‘-Java 8, ืžื•ืฉื’ ื”-SAM ื ื•ืฆืจ ืžื—ื“ืฉ ื•ื ืงืจื ืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื. ื ื™ืชืŸ ืœื™ื™ืฆื’ ืื•ืชื ื‘ืืžืฆืขื•ืช ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”, ื”ืคื ื™ื•ืช ืœืฉื™ื˜ื” ื•ื‘ื ื™ื™ ื”ืคื ื™ื•ืช. ื ื•ืฆืจื” ื”ืขืจืช @FunctionalInterface ื—ื“ืฉื” ื”ืžืฉืžืฉืช ืœื–ืจื™ืงืช ืฉื’ื™ืื•ืช ื‘ืจืžืช ื”ืžื”ื“ืจ ื›ืืฉืจ ื”ืžืžืฉืง ืฉืฆื™ื™ื ืช ืœื ืขื•ื‘ื“ ื‘ืจืžื” ื”ืคื•ื ืงืฆื™ื•ื ืœื™ืช. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™ ืคืฉื•ื˜ ืขื ืฉื™ื˜ื” ืžื•ืคืฉื˜ืช ืื—ืช:
@FunctionalInterface
public interface SimpleFunInterface {
    public void doWork();
}
ืžืžืฉืง ื™ื›ื•ืœ ื’ื ืœื”ื›ืจื™ื– ืขืœ ืžืชื•ื“ื•ืช ืžื•ืคืฉื˜ื•ืช ืžืžื—ืœืงื” java.lang.Object, ืื‘ืœ ื‘ืžืงืจื” ื–ื” ื ื™ืชืŸ ืœื”ื›ืจื™ื– ืขืœ ื”ืžืžืฉืง ื’ื ื›ืคื•ื ืงืฆื™ื•ื ืœื™:
@FunctionalInterface
public interface SimpleFuncInterface {
    public void doWork();
    public String toString();
    public Boolean equals(Object o);
}
ื‘ืจื’ืข ืฉื”ื•ืกืคืชื ืขื•ื“ ืฉื™ื˜ื” ืžื•ืคืฉื˜ืช ืœืžืžืฉืง, ื”-IDE ื™ืกืžืŸ ืื•ืชื” ื›ืฉื’ื•ื™ื” ื›ืžื• ื‘ืชืžื•ื ื”: ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื - 2 ืžืžืฉืง ื™ื›ื•ืœ ืœืจืฉืช ืžืžืžืฉืง ืื—ืจ; ืื ื”ืžืžืฉืง ื™ื•ืจืฉ ืžืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™ ื•ืื™ื ื• ืžื›ื™ืœ ืฉื™ื˜ื•ืช ืžื•ืคืฉื˜ื•ืช ื—ื“ืฉื•ืช, ืื– ื’ื ืžืžืฉืง ื–ื” ืคื•ื ืงืฆื™ื•ื ืœื™. ืื‘ืœ ืžืžืฉืง ื™ื›ื•ืœ ืœื”ื›ื™ืœ ืจืง ืฉื™ื˜ื” ืžื•ืคืฉื˜ืช ืื—ืช ื•ืฉื™ื˜ื•ืช ื‘ืจื™ืจืช ืžื—ื“ืœ ืจื‘ื•ืช, ื•ื”ื•ื ืขื“ื™ื™ืŸ ื™ื™ื—ืฉื‘ ืคื•ื ืงืฆื™ื•ื ืœื™.
@FunctionalInterface
public interface ComplexFunctionalInterface extends SimpleFuncInterface {
    default public void doSomeWork() {
        System.out.println("Doing some work in interface impl...");
    }
    default public void doSomeWork() {
        System.out.println("Doing some other work in interface impl...");
    }
}
ื”ื“ื•ื’ืžื” ื”ืขืœื™ื•ื ื” ื”ื™ื ืขื“ื™ื™ืŸ ืžืžืฉืง ืคื•ื ืงืฆื™ื•ื ืœื™. ื›ืขืช ื ืกืชื›ืœ ื›ื™ืฆื“ ืื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื” ื›ื“ื™ ืœื”ื—ืœื™ืฃ ืžื—ืœืงื” ืคื ื™ืžื™ืช ืื ื•ื ื™ืžื™ืช ื›ื“ื™ ืœื™ื™ืฉื ืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื:
/*
*Implementation the interface by creating an
*anonymoous inner class versus using
*lambda expression.
*/
public class SimpleFunInterfaceTest {
    public static void main(String[] args) {
        carryOutWork(new SimpleFunInterface() {
            @Override
            public void doWork() {
                System.out.println("Do work in SimpleFun impl...");
            }
        });
        carryOutWork(() -> System.out.println("Do work in lambda exp impl..."));
    }
    public static void carryOutWork(SimpleFuncInterface sfi) {
        sfi.work();
    }
}
ื”ืชื•ืฆืื” ืฉืœ ื”ืชื•ื›ื ื™ืช ืชื”ื™ื” ื›ื“ืœืงืžืŸ:
Do work in SimpleFun impl...
Do work in lambda exp impl...
ื‘ืžืงืจื” ืฉืืชื” ืžืฉืชืžืฉ ื‘-IDE ื”ืชื•ืžืš ื‘ืชื—ื‘ื™ืจ ื‘ื™ื˜ื•ื™ Java lambda (ื‘ื ื™ื™ืช Netbeans 8 Nightly) - ืืชื” ืžืงื‘ืœ ืจืžื– ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžื—ืœืงื•ืช ืคื ื™ืžื™ื•ืช ืื ื•ื ื™ืžื™ื•ืช: ืžื‘ื•ื ืœืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื - 3 ื–ื” ื”ื™ื” ื”ืงื“ืžื” ืงืฆืจื” ืœืžื•ืฉื’ ืžืžืฉืงื™ื ืคื•ื ืงืฆื™ื•ื ืœื™ื™ื ื‘-Java 8 ื•ื›ื™ืฆื“ ื ื™ืชืŸ ืœื™ื™ืฉื ืื•ืชื ืฉื™ืžื•ืฉ ื‘ื‘ื™ื˜ื•ื™ื™ ืœืžื‘ื“ื”.
ื”ืขืจื•ืช
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION