diff --git a/StudyInterfaces/.classpath b/StudyInterfaces/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/StudyInterfaces/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/StudyInterfaces/.project b/StudyInterfaces/.project new file mode 100644 index 0000000..ac4f9f7 --- /dev/null +++ b/StudyInterfaces/.project @@ -0,0 +1,17 @@ + + + StudyInterfaces + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/StudyInterfaces/.settings/org.eclipse.core.resources.prefs b/StudyInterfaces/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/StudyInterfaces/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs b/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/StudyInterfaces/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/StudyInterfaces/src/com/example/Exercise01.java b/StudyInterfaces/src/com/example/Exercise01.java new file mode 100644 index 0000000..a362db0 --- /dev/null +++ b/StudyInterfaces/src/com/example/Exercise01.java @@ -0,0 +1,21 @@ +package com.example; + +public class Exercise01 { + + public static void main(String[] args) { + + } + +} + +interface A { +} + +interface B { +} + +interface C { +} + +interface D extends A, B, C { // multiple inheritance +} \ No newline at end of file diff --git a/StudyInterfaces/src/com/example/Exercise02.java b/StudyInterfaces/src/com/example/Exercise02.java new file mode 100644 index 0000000..bd9e830 --- /dev/null +++ b/StudyInterfaces/src/com/example/Exercise02.java @@ -0,0 +1,21 @@ +package com.example; + +public class Exercise02 { + + public static void main(String[] args) { + DD o = new DD(); + System.out.println(o instanceof DD); + System.out.println(o instanceof CC); + // Error : System.out.println(o instanceof AA); + System.out.println(o instanceof BB); + } + +} + +abstract class AA {} +abstract class GG {} +interface BB {} +interface FF {} +abstract class CC {} + +class DD extends CC implements BB, FF {} \ No newline at end of file diff --git a/StudyInterfaces/src/com/example/Exercise03.java b/StudyInterfaces/src/com/example/Exercise03.java new file mode 100644 index 0000000..69c2d62 --- /dev/null +++ b/StudyInterfaces/src/com/example/Exercise03.java @@ -0,0 +1,27 @@ +package com.example; + +public class Exercise03 { + public static void main(String[] args) { + + } +} + +sealed interface Service permits ABC, XYZ { + int fun(); +} + +final class ABC implements Service { + + @Override + public int fun() { + return 42; + } +} + +final class XYZ implements Service { + + @Override + public int fun() { + return 108; + } +} \ No newline at end of file diff --git a/study-functional-programming/.classpath b/study-functional-programming/.classpath new file mode 100644 index 0000000..57bca72 --- /dev/null +++ b/study-functional-programming/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/study-functional-programming/.project b/study-functional-programming/.project new file mode 100644 index 0000000..13afc64 --- /dev/null +++ b/study-functional-programming/.project @@ -0,0 +1,17 @@ + + + study-functional-programming + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/study-functional-programming/.settings/org.eclipse.core.resources.prefs b/study-functional-programming/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..99f26c0 --- /dev/null +++ b/study-functional-programming/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/study-functional-programming/.settings/org.eclipse.jdt.core.prefs b/study-functional-programming/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..8c9943d --- /dev/null +++ b/study-functional-programming/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,14 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/study-functional-programming/src/com/example/DefineFunctionalProgramming.java b/study-functional-programming/src/com/example/DefineFunctionalProgramming.java new file mode 100644 index 0000000..e975105 --- /dev/null +++ b/study-functional-programming/src/com/example/DefineFunctionalProgramming.java @@ -0,0 +1,40 @@ +package com.example; + +import java.util.List; +import java.util.function.Predicate; + +public class DefineFunctionalProgramming { + + public static void main(String[] args) { + // fp's function: 1) higher-order function + // 2) pure function -> immutable -> + // i. Lambda Expression + // ii. Method Reference + var numbers = List.of(4, 8, 15, 16, 23, 42); + // even -> cube -> sum + // New Type: function -> functional interface -> Single Abstract Method + MyFun x = u -> 2 * u - 5 ; + + // Build-in Functional Interface: Predicate, Function, ... + Predicate isEven = z -> z%2 == 0; + var result = + numbers.stream() + //.filter(z -> z%2 ==0) // 4 8 16 42 + .filter(MyFun::ciftMi) // 4 8 16 42 + //.mapToInt(p -> p*p*p) // 64 512 4096 74088 + .mapToInt(MyFun::kubu) // 64 512 4096 74088 + // (0,64) -> 64 -> (64,512) -> 576 -> (576,4096) -> 4672 -> (4672,74088) -> 78760 + //.reduce(0, (s,r)->s+r); + //.reduce(0, Integer::sum); + .sum(); + System.out.println(result); + } + +} + +@FunctionalInterface +interface MyFun { + int fun(int x); + static boolean ciftMi(int x) { return x%2 == 0;} + static int kubu(int x) {return x*x*x;} +} \ No newline at end of file