From 9e4258a421af3d40018d219c7de4cc577ed89ddb Mon Sep 17 00:00:00 2001 From: Artem Pronchakov Date: Tue, 22 Mar 2016 23:19:05 +0300 Subject: [PATCH 1/2] Add default interface method example --- .idea/copyright/profiles_settings.xml | 3 +++ .idea/encodings.xml | 4 +++- .idea/misc.xml | 2 +- .idea/modules.xml | 1 + .../DefaultInterfaceMethod.iml | 11 ++++++++++ Class/DefaultInterfaceMethod/src/Ivan.java | 16 ++++++++++++++ Class/DefaultInterfaceMethod/src/Main.java | 21 +++++++++++++++++++ .../src/Programmer.java | 12 +++++++++++ Class/DefaultInterfaceMethod/src/Vasiliy.java | 11 ++++++++++ 9 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 .idea/copyright/profiles_settings.xml create mode 100644 Class/DefaultInterfaceMethod/DefaultInterfaceMethod.iml create mode 100644 Class/DefaultInterfaceMethod/src/Ivan.java create mode 100644 Class/DefaultInterfaceMethod/src/Main.java create mode 100644 Class/DefaultInterfaceMethod/src/Programmer.java create mode 100644 Class/DefaultInterfaceMethod/src/Vasiliy.java diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000..e7bedf3 --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml index d821048..f758959 100644 --- a/.idea/encodings.xml +++ b/.idea/encodings.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index f67c57e..df7e8eb 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,7 +3,7 @@ - + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml index b6d775a..d93d662 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -33,6 +33,7 @@ + diff --git a/Class/DefaultInterfaceMethod/DefaultInterfaceMethod.iml b/Class/DefaultInterfaceMethod/DefaultInterfaceMethod.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/Class/DefaultInterfaceMethod/DefaultInterfaceMethod.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Class/DefaultInterfaceMethod/src/Ivan.java b/Class/DefaultInterfaceMethod/src/Ivan.java new file mode 100644 index 0000000..dd4b93c --- /dev/null +++ b/Class/DefaultInterfaceMethod/src/Ivan.java @@ -0,0 +1,16 @@ +/** + * @author Artem Pronchakov + */ +public class Ivan implements Programmer { + + @Override + public String sayHello() { + return "Hello, I am Ivan. I can write programs."; + } + + @Override + public void writeProgram() { + System.out.println("String s = null; s.toString();"); + } + +} diff --git a/Class/DefaultInterfaceMethod/src/Main.java b/Class/DefaultInterfaceMethod/src/Main.java new file mode 100644 index 0000000..364c646 --- /dev/null +++ b/Class/DefaultInterfaceMethod/src/Main.java @@ -0,0 +1,21 @@ +/** + * @author Artem Pronchakov + */ +public class Main { + + public static void main(String[] args) { + + Programmer ivan = new Ivan(); + Programmer vasiliy = new Vasiliy(); + + System.out.println(ivan.sayHello()); + ivan.writeProgram(); + + System.out.println("==========================="); + + System.out.println(vasiliy.sayHello()); + vasiliy.writeProgram(); + + } + +} diff --git a/Class/DefaultInterfaceMethod/src/Programmer.java b/Class/DefaultInterfaceMethod/src/Programmer.java new file mode 100644 index 0000000..673f4e4 --- /dev/null +++ b/Class/DefaultInterfaceMethod/src/Programmer.java @@ -0,0 +1,12 @@ +/** + * @author Artem Pronchakov + */ +public interface Programmer { + + default String sayHello() { + return "Hello"; + } + + void writeProgram(); + +} diff --git a/Class/DefaultInterfaceMethod/src/Vasiliy.java b/Class/DefaultInterfaceMethod/src/Vasiliy.java new file mode 100644 index 0000000..c6f9d73 --- /dev/null +++ b/Class/DefaultInterfaceMethod/src/Vasiliy.java @@ -0,0 +1,11 @@ +/** + * @author Artem Pronchakov + */ +public class Vasiliy implements Programmer { + + @Override + public void writeProgram() { + System.out.println("System.exit(0)"); + } + +} From b167a9c1030905870a3d453c1f600d31d9fc493e Mon Sep 17 00:00:00 2001 From: Artem Pronchakov Date: Wed, 23 Mar 2016 00:48:05 +0300 Subject: [PATCH 2/2] Add Lambdas example --- .idea/modules.xml | 1 + Class/Lambda/Lambda.iml | 11 +++++ .../edu/javacourse/clazz/lambda/Handler.java | 14 ++++++ .../src/edu/javacourse/clazz/lambda/Main.java | 48 +++++++++++++++++++ .../edu/javacourse/clazz/lambda/Person.java | 42 ++++++++++++++++ .../javacourse/clazz/lambda/ToStringer.java | 10 ++++ 6 files changed, 126 insertions(+) create mode 100644 Class/Lambda/Lambda.iml create mode 100644 Class/Lambda/src/edu/javacourse/clazz/lambda/Handler.java create mode 100644 Class/Lambda/src/edu/javacourse/clazz/lambda/Main.java create mode 100644 Class/Lambda/src/edu/javacourse/clazz/lambda/Person.java create mode 100644 Class/Lambda/src/edu/javacourse/clazz/lambda/ToStringer.java diff --git a/.idea/modules.xml b/.idea/modules.xml index d93d662..a79878e 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -49,6 +49,7 @@ + diff --git a/Class/Lambda/Lambda.iml b/Class/Lambda/Lambda.iml new file mode 100644 index 0000000..c90834f --- /dev/null +++ b/Class/Lambda/Lambda.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Class/Lambda/src/edu/javacourse/clazz/lambda/Handler.java b/Class/Lambda/src/edu/javacourse/clazz/lambda/Handler.java new file mode 100644 index 0000000..ea915bf --- /dev/null +++ b/Class/Lambda/src/edu/javacourse/clazz/lambda/Handler.java @@ -0,0 +1,14 @@ +package edu.javacourse.clazz.lambda; + +/** + * @author Artem Pronchakov + */ +public class Handler { + + void handle(Person person, ToStringer toStringer) { + + System.out.println("Handled person: " + toStringer.convertToString(person)); + + } + +} diff --git a/Class/Lambda/src/edu/javacourse/clazz/lambda/Main.java b/Class/Lambda/src/edu/javacourse/clazz/lambda/Main.java new file mode 100644 index 0000000..9055ac7 --- /dev/null +++ b/Class/Lambda/src/edu/javacourse/clazz/lambda/Main.java @@ -0,0 +1,48 @@ +package edu.javacourse.clazz.lambda; + +/** + * @author Artem Pronchakov + */ +public class Main { + + public static void main(String[] args) { + + Person person = new Person(3L, "Franca Sabbatini"); + + Handler handler = new Handler(); + +// Class + ClassToStringer classToStringer = new ClassToStringer(); + handler.handle(person, classToStringer); + + System.out.println("\r\n================================================\r\n"); + +// Anonymous class + handler.handle(person, new ToStringer() { + @Override + public String convertToString(Person person) { + return "anonymous: " + person.getName(); + } + }); + + System.out.println("\r\n================================================\r\n"); + +// Lambda long + handler.handle(person, (Person p) -> { return "lambda_long: " + p.getName(); }); + + System.out.println("\r\n================================================\r\n"); + +// Lambda short + handler.handle(person, (p) -> "lambda_short: " + p.getName()); + } + + private static class ClassToStringer implements ToStringer { + + @Override + public String convertToString(Person person) { + return "class: " + person.getName(); + } + + } + +} diff --git a/Class/Lambda/src/edu/javacourse/clazz/lambda/Person.java b/Class/Lambda/src/edu/javacourse/clazz/lambda/Person.java new file mode 100644 index 0000000..8da7496 --- /dev/null +++ b/Class/Lambda/src/edu/javacourse/clazz/lambda/Person.java @@ -0,0 +1,42 @@ +package edu.javacourse.clazz.lambda; + +/** + * @author Artem Pronchakov + */ +public class Person { + + private Long id; + private String name; + + public Person() { + } + + public Person(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Person{" + + "id=" + id + + ", name='" + name + '\'' + + '}'; + } +} diff --git a/Class/Lambda/src/edu/javacourse/clazz/lambda/ToStringer.java b/Class/Lambda/src/edu/javacourse/clazz/lambda/ToStringer.java new file mode 100644 index 0000000..728d97f --- /dev/null +++ b/Class/Lambda/src/edu/javacourse/clazz/lambda/ToStringer.java @@ -0,0 +1,10 @@ +package edu.javacourse.clazz.lambda; + +/** + * @author Artem Pronchakov + */ +public interface ToStringer { + + String convertToString(Person person); + +}