From 3bd79ebb187cf0def9c1b0782f11c2c58d794c7a Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Fri, 15 Jun 2018 13:14:10 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=80=E7=AB=A0=20?= =?UTF-8?q?=E6=8C=81=E6=9C=89=E5=AF=B9=E8=B1=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/lynn/haveObject/CollModel.java | 57 +++++++++++++++++++ .../java/com/lynn/haveObject/ListIter.java | 23 ++++++++ 2 files changed, 80 insertions(+) create mode 100644 src/main/java/com/lynn/haveObject/CollModel.java create mode 100644 src/main/java/com/lynn/haveObject/ListIter.java diff --git a/src/main/java/com/lynn/haveObject/CollModel.java b/src/main/java/com/lynn/haveObject/CollModel.java new file mode 100644 index 0000000..5dd3885 --- /dev/null +++ b/src/main/java/com/lynn/haveObject/CollModel.java @@ -0,0 +1,57 @@ +package com.lynn.haveObject; + +import java.util.*; + +public class CollModel { + static final String dog = "dog"; + + static Collection fill(Collection collection) { + collection.add("rat"); + collection.add("cat"); + collection.add("dog"); + collection.add("dog"); + return collection; + } + + static Map fill(Map map) { + map.put("rat", "Fuzzy"); + map.put("cat", "Rags"); + map.put("dog", "Bosco"); + map.put("dog", "Spot"); + return map; + } + + public static void main(String[] args) { +// List lists= Arrays.asList(new Light(),new Heavy()); + ArrayList strings = new ArrayList(); + System.out.println(fill(strings)); + if (strings.contains("dog")) { + System.out.println(strings.indexOf("dog")); + } + System.out.println(fill(new LinkedList())); + System.out.println(fill(new HashSet())); + System.out.println(fill(new TreeSet())); + System.out.println(fill(new LinkedHashSet())); + System.out.println(fill(new HashMap())); + System.out.println(fill(new TreeMap())); + System.out.println(fill(new LinkedHashMap())); + } +} + +class Snow { +} + +class Power extends Snow { +} + +class Light extends Power { +} + +class Heavy extends Power { +} + +class Crusty extends Power { +} + +class Slush extends Power { +} diff --git a/src/main/java/com/lynn/haveObject/ListIter.java b/src/main/java/com/lynn/haveObject/ListIter.java new file mode 100644 index 0000000..f77a371 --- /dev/null +++ b/src/main/java/com/lynn/haveObject/ListIter.java @@ -0,0 +1,23 @@ +package com.lynn.haveObject; + +import java.util.Arrays; +import java.util.List; +import java.util.ListIterator; + +public class ListIter { + static List fill() { + List strings = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9"); + return strings; + } + + public static void main(String[] args) { + ListIterator listIterator = fill().listIterator(); + while (listIterator.hasNext()) { + System.out.println(listIterator.next() + "," + listIterator.nextIndex() + ","+listIterator.previousIndex()); + } + } + + class Pet { + + } +} -- Gitee From 5ad6cfa197915246674510cc459f15f476a3a917 Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Fri, 15 Jun 2018 14:29:11 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=B8=80=E7=AB=A0=20?= =?UTF-8?q?=E6=8C=81=E6=9C=89=E5=AF=B9=E8=B1=A1=20iter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/lynn/haveObject/Iter.java | 19 +++++++++++++++++++ .../java/com/lynn/haveObject/ListIter.java | 7 ++----- 2 files changed, 21 insertions(+), 5 deletions(-) create mode 100644 src/main/java/com/lynn/haveObject/Iter.java diff --git a/src/main/java/com/lynn/haveObject/Iter.java b/src/main/java/com/lynn/haveObject/Iter.java new file mode 100644 index 0000000..4e7e2de --- /dev/null +++ b/src/main/java/com/lynn/haveObject/Iter.java @@ -0,0 +1,19 @@ +package com.lynn.haveObject; + +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +public class Iter { + public static void main(String[] args) { + List integerList = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); + test(integerList); + + } + + public static void test(Iterable it) { + for (Object o : it) { + System.out.println(o); + } + } +} diff --git a/src/main/java/com/lynn/haveObject/ListIter.java b/src/main/java/com/lynn/haveObject/ListIter.java index f77a371..c0761a8 100644 --- a/src/main/java/com/lynn/haveObject/ListIter.java +++ b/src/main/java/com/lynn/haveObject/ListIter.java @@ -1,8 +1,6 @@ package com.lynn.haveObject; -import java.util.Arrays; -import java.util.List; -import java.util.ListIterator; +import java.util.*; public class ListIter { static List fill() { @@ -13,11 +11,10 @@ public class ListIter { public static void main(String[] args) { ListIterator listIterator = fill().listIterator(); while (listIterator.hasNext()) { - System.out.println(listIterator.next() + "," + listIterator.nextIndex() + ","+listIterator.previousIndex()); + System.out.println(listIterator.next() + "," + listIterator.nextIndex() + "," + listIterator.previousIndex()); } } class Pet { - } } -- Gitee From 7aa5aa73f21655382a1f2738339e537ab7b0b7c5 Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Fri, 29 Jun 2018 16:39:29 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=BA=8C=E7=AB=A0=20Clas?= =?UTF-8?q?s!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/inspectionProfiles/Project_Default.xml | 4 ++ .../java/com/lynn/haveObject/StrOrChar.java | 12 ++++++ src/main/java/com/lynn/typeinfo/Claze.java | 18 +++++++++ src/main/java/com/lynn/typeinfo/TypeInfo.java | 40 +++++++++++++++++++ 4 files changed, 74 insertions(+) create mode 100644 src/main/java/com/lynn/haveObject/StrOrChar.java create mode 100644 src/main/java/com/lynn/typeinfo/Claze.java create mode 100644 src/main/java/com/lynn/typeinfo/TypeInfo.java diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml index 04e3dba..aa5586c 100644 --- a/.idea/inspectionProfiles/Project_Default.xml +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -1,6 +1,10 @@ \ No newline at end of file diff --git a/src/main/java/com/lynn/haveObject/StrOrChar.java b/src/main/java/com/lynn/haveObject/StrOrChar.java new file mode 100644 index 0000000..10ecc4e --- /dev/null +++ b/src/main/java/com/lynn/haveObject/StrOrChar.java @@ -0,0 +1,12 @@ +package com.lynn.haveObject; + +public class StrOrChar { + public static void main(String[] args) { + /** char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字, + * 所以,char型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 + * unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充 + * 说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。*/ + char a = '餮'; + System.out.println(a); + } +} diff --git a/src/main/java/com/lynn/typeinfo/Claze.java b/src/main/java/com/lynn/typeinfo/Claze.java new file mode 100644 index 0000000..1df44fd --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/Claze.java @@ -0,0 +1,18 @@ +package com.lynn.typeinfo; + +public class Claze { + public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException { + System.out.println(); + Class aClass = (Class) Class.forName("com.lynn.typeinfo.TypeInfo"); + TypeInfo typeInfo = aClass.newInstance(); + System.out.println(typeInfo.aClass); + System.out.println(Boolean.TYPE == boolean.class); + System.out.println(Character.TYPE == char.class); + System.out.println(Byte.TYPE == byte.class); + System.out.println(Short.TYPE == short.class); + System.out.println(Integer.TYPE == int.class); + System.out.println(Void.TYPE == void.class); + System.out.println(Long.TYPE == long.class); + System.out.println(long.class); + } +} diff --git a/src/main/java/com/lynn/typeinfo/TypeInfo.java b/src/main/java/com/lynn/typeinfo/TypeInfo.java new file mode 100644 index 0000000..8cf6895 --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/TypeInfo.java @@ -0,0 +1,40 @@ +package com.lynn.typeinfo; + +import java.util.Arrays; +import java.util.List; + +public class TypeInfo { + public static final String aClass = "TypeInfo"; + public static void main(String[] args) { + Circle circle = new Circle(); + System.out.println(circle + ""); +// List list = new ArrayList(); +// list.add(circle); +// System.out.println(list.get(0)); +// list.get(0).draw(); + List lists = Arrays.asList((Shape) new Circle()); + for (Shape shape : lists) { + System.out.println(shape instanceof Circle); + System.out.println(shape instanceof Shape); + shape.draw(); + } + + } +} + +abstract class Shape { + void draw() { + } + + public abstract String toString(); +} + +class Circle extends Shape { + void draw() { + System.out.println("Circle draw"); + } + + public String toString() { + return "Circle"; + } +} -- Gitee From 0f0f273e31606bfc78c0d89089eddf0919397959 Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Fri, 29 Jun 2018 18:32:27 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=BA=8C=E7=AB=A0=20Arra?= =?UTF-8?q?y=E7=9A=84=E5=88=A0=E9=99=A4!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 2 +- .idea/libraries/Maven__cglib_cglib_3_2_6.xml | 13 ++++ .../Maven__org_apache_ant_ant_1_9_6.xml | 13 ++++ ...ven__org_apache_ant_ant_launcher_1_9_6.xml | 13 ++++ ...it_jupiter_junit_jupiter_api_5_3_0_M1.xml} | 8 +-- ...tform_junit_platform_commons_1_3_0_M1.xml} | 8 +-- .../libraries/Maven__org_ow2_asm_asm_6_0.xml | 13 ++++ .idea/thinkJava.iml | 10 ++- pom.xml | 19 ++++++ .../com/lynn/typeinfo/ArraysDeleteBetter.java | 64 +++++++++++++++++++ .../java/com/lynn/typeinfo/ProxyCglib.java | 38 +++++++++++ src/main/java/com/lynn/typeinfo/ProxyJdk.java | 45 +++++++++++++ 12 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 .idea/libraries/Maven__cglib_cglib_3_2_6.xml create mode 100644 .idea/libraries/Maven__org_apache_ant_ant_1_9_6.xml create mode 100644 .idea/libraries/Maven__org_apache_ant_ant_launcher_1_9_6.xml rename .idea/libraries/{Maven__org_junit_jupiter_junit_jupiter_api_5_2_0.xml => Maven__org_junit_jupiter_junit_jupiter_api_5_3_0_M1.xml} (55%) rename .idea/libraries/{Maven__org_junit_platform_junit_platform_commons_1_2_0.xml => Maven__org_junit_platform_junit_platform_commons_1_3_0_M1.xml} (62%) create mode 100644 .idea/libraries/Maven__org_ow2_asm_asm_6_0.xml create mode 100644 src/main/java/com/lynn/typeinfo/ArraysDeleteBetter.java create mode 100644 src/main/java/com/lynn/typeinfo/ProxyCglib.java create mode 100644 src/main/java/com/lynn/typeinfo/ProxyJdk.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index bce2070..427c1de 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -10,7 +10,7 @@ - + \ No newline at end of file diff --git a/.idea/libraries/Maven__cglib_cglib_3_2_6.xml b/.idea/libraries/Maven__cglib_cglib_3_2_6.xml new file mode 100644 index 0000000..85f6d77 --- /dev/null +++ b/.idea/libraries/Maven__cglib_cglib_3_2_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_ant_ant_1_9_6.xml b/.idea/libraries/Maven__org_apache_ant_ant_1_9_6.xml new file mode 100644 index 0000000..8cba3e1 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_ant_ant_1_9_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_9_6.xml b/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_9_6.xml new file mode 100644 index 0000000..4a5c8b2 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_ant_ant_launcher_1_9_6.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_2_0.xml b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_0_M1.xml similarity index 55% rename from .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_2_0.xml rename to .idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_0_M1.xml index 3c2d85c..3bca303 100644 --- a/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_2_0.xml +++ b/.idea/libraries/Maven__org_junit_jupiter_junit_jupiter_api_5_3_0_M1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_2_0.xml b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_0_M1.xml similarity index 62% rename from .idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_2_0.xml rename to .idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_0_M1.xml index 92d6f70..6d112d0 100644 --- a/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_2_0.xml +++ b/.idea/libraries/Maven__org_junit_platform_junit_platform_commons_1_3_0_M1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_ow2_asm_asm_6_0.xml b/.idea/libraries/Maven__org_ow2_asm_asm_6_0.xml new file mode 100644 index 0000000..637f567 --- /dev/null +++ b/.idea/libraries/Maven__org_ow2_asm_asm_6_0.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/thinkJava.iml b/.idea/thinkJava.iml index 2d22ea7..f146ff1 100644 --- a/.idea/thinkJava.iml +++ b/.idea/thinkJava.iml @@ -1,6 +1,6 @@ - + @@ -11,9 +11,13 @@ - + - + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3b15a17..64be963 100644 --- a/pom.xml +++ b/pom.xml @@ -7,12 +7,31 @@ thinkJava thinkJava 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.6 + 1.6 + + + + org.junit.jupiter junit-jupiter-api RELEASE + + + cglib + cglib + 3.2.6 + + diff --git a/src/main/java/com/lynn/typeinfo/ArraysDeleteBetter.java b/src/main/java/com/lynn/typeinfo/ArraysDeleteBetter.java new file mode 100644 index 0000000..3026d27 --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/ArraysDeleteBetter.java @@ -0,0 +1,64 @@ +package com.lynn.typeinfo; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; + +/** + * 方式一:报错 java.util.ConcurrentModificationException + * 方式二:报错:下标越界 java.lang.IndexOutOfBoundsException + *     list移除了元素但size大小未响应变化,所以导致数组下标不对; + *     list.remove(i)必须size-- + *     而且取出的数据的索引也不准确,同时需要做i--操作 + * 方式三:正常删除,不推荐;每次循环都需要计算list的大小,效率低 + * 方式四:正常删除,推荐使用 + * 方式五:报错: java.util.ConcurrentModificationException + */ +public class ArraysDeleteBetter { + public static void main(String[] args) { + List list = new ArrayList<>(Arrays.asList("a1", "ab2", "a3", "ab4", "a5", "ab6", "a7", "ab8", "a9")); + // 迭代删除方式一 + for (String str : list) { + System.out.println(str); + if (str.contains("b")) { + list.remove(str); + } + } + // 迭代删除方式二 + int size = list.size(); + for (int i = 0; i < size; i++) { + String str = list.get(i); + System.out.println(str); + if (str.contains("b")) { + list.remove(i); +// size--;//ok +// i--; + } + } + // 迭代删除方式三 + for (int i = 0; i < list.size(); i++) { + String str = list.get(i); + System.out.println(str); + if (str.contains("b")) { + list.remove(i); + } + } + // 迭代删除方式四 + for (Iterator ite = list.iterator(); ite.hasNext(); ) { + String str = ite.next(); + System.out.println(str); + if (str.contains("b")) { + ite.remove(); + } + } + // 迭代删除方式五 + for (Iterator ite = list.iterator(); ite.hasNext(); ) { + String str = ite.next(); + if (str.contains("b")) { + list.remove(str); + } + } + + } +} diff --git a/src/main/java/com/lynn/typeinfo/ProxyCglib.java b/src/main/java/com/lynn/typeinfo/ProxyCglib.java new file mode 100644 index 0000000..2eea1c6 --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/ProxyCglib.java @@ -0,0 +1,38 @@ +package com.lynn.typeinfo; + +import net.sf.cglib.proxy.Enhancer; +import net.sf.cglib.proxy.MethodInterceptor; +import net.sf.cglib.proxy.MethodProxy; + +import java.lang.reflect.Method; +import java.util.ArrayList; + +public class ProxyCglib { + public static void main(String[] args) { + Intermediary intermediary = new Intermediary(); + + Enhancer enhancer = new Enhancer(); + enhancer.setSuperclass(Landlord.class); + enhancer.setCallback(intermediary); + + Landlord rentProxy = (Landlord) enhancer.create(); + rentProxy.rent(); + new ArrayList<>().remove(1); + } +} + +class Landlord { + public void rent() { + System.out.println("房东要出租房子了!"); + } +} + +class Intermediary implements MethodInterceptor { + + @Override + public Object intercept(Object object, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { + Object intercept = methodProxy.invokeSuper(object, args); + System.out.println("中介:该房源已发布!"); + return intercept; + } +} diff --git a/src/main/java/com/lynn/typeinfo/ProxyJdk.java b/src/main/java/com/lynn/typeinfo/ProxyJdk.java new file mode 100644 index 0000000..02af828 --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/ProxyJdk.java @@ -0,0 +1,45 @@ +package com.lynn.typeinfo; + +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import java.lang.reflect.Proxy; + +/** + * JDK代理 + */ +public class ProxyJdk { + public static void main(String[] args) { + Rent rent = new Landlord(); + Intermediary intermediary = new Intermediary(rent); + Rent rentProxy = (Rent) Proxy.newProxyInstance(rent.getClass().getClassLoader(), rent.getClass().getInterfaces(), intermediary); + rentProxy.rent(); + } + static class Landlord implements Rent { + @Override + public void rent() { + System.out.println("房东要出租房子了!"); + } + } + + static class Intermediary implements InvocationHandler { + + private Object post; + + Intermediary(Object post) { + this.post = post; + } + + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + Object invoke = method.invoke(post, args); + System.out.println("中介:该房源已发布!"); + return invoke; + } + } + + interface Rent { + void rent(); + } +} + + + -- Gitee From 4fa809d703de4c37706ee65768c3bfae89561875 Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Mon, 2 Jul 2018 11:19:06 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E4=BA=8C=E7=AB=A0=20?= =?UTF-8?q?=E4=BB=A3=E7=90=86=E6=A8=A1=E5=BC=8F=E7=9A=84=E4=B8=A4=E7=A7=8D?= =?UTF-8?q?=E7=90=86=E8=A7=A3=EF=BC=88=E9=9D=99=E6=80=81=E4=BB=A3=E7=90=86?= =?UTF-8?q?=E5=92=8C=E5=8A=A8=E6=80=81=E4=BB=A3=E7=90=86=3D=E3=80=8Bjdk?= =?UTF-8?q?=E4=BB=A3=E7=90=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/lynn/typeinfo/ProxyJdk.java | 64 ++++++++++++------- .../java/com/lynn/typeinfo/ProxyStatic.java | 42 ++++++++++++ 2 files changed, 82 insertions(+), 24 deletions(-) create mode 100644 src/main/java/com/lynn/typeinfo/ProxyStatic.java diff --git a/src/main/java/com/lynn/typeinfo/ProxyJdk.java b/src/main/java/com/lynn/typeinfo/ProxyJdk.java index 02af828..39b4c64 100644 --- a/src/main/java/com/lynn/typeinfo/ProxyJdk.java +++ b/src/main/java/com/lynn/typeinfo/ProxyJdk.java @@ -4,42 +4,58 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; +import com.lynn.typeinfo.ProxyCglib; + /** - * JDK代理 + * JDK代理 也是动态代理 */ public class ProxyJdk { public static void main(String[] args) { - Rent rent = new Landlord(); - Intermediary intermediary = new Intermediary(rent); - Rent rentProxy = (Rent) Proxy.newProxyInstance(rent.getClass().getClassLoader(), rent.getClass().getInterfaces(), intermediary); + Rent rent = new Landlord1(); + Rent rentProxy = (Rent) Proxy.newProxyInstance(rent.getClass().getClassLoader(), rent.getClass().getInterfaces(), (proxy, method, args1) -> { + Object invoke = method.invoke(rent, args1); + System.out.println("中介:该房源已发布!"); + return invoke; + }); rentProxy.rent(); + System.out.println(rent); } - static class Landlord implements Rent { - @Override - public void rent() { - System.out.println("房东要出租房子了!"); - } - } - - static class Intermediary implements InvocationHandler { - private Object post; - - Intermediary(Object post) { - this.post = post; - } +} - public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { - Object invoke = method.invoke(post, args); - System.out.println("中介:该房源已发布!"); - return invoke; - } +class Landlord1 implements Rent { + private String name = "房东名"; + @Override + public void rent() { + System.out.println("房东要出租房子了!"); } - interface Rent { - void rent(); + @Override + public String toString() { + return "Landlord1{" + + "name='" + name + '\'' + + '}'; } } +// +//class Intermediary1 implements InvocationHandler { +// +// private Object post; +// +// Intermediary1(Object post) { +// this.post = post; +// } +// +// public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { +// Object invoke = method.invoke(post, args); +// System.out.println("中介:该房源已发布!"); +// return invoke; +// } +//} + +interface Rent { + void rent(); +} diff --git a/src/main/java/com/lynn/typeinfo/ProxyStatic.java b/src/main/java/com/lynn/typeinfo/ProxyStatic.java new file mode 100644 index 0000000..2d69f06 --- /dev/null +++ b/src/main/java/com/lynn/typeinfo/ProxyStatic.java @@ -0,0 +1,42 @@ +package com.lynn.typeinfo; + +/** + * 静态代理 + * 因为代理对象需要与目标对象实现一样的接口,所以会有很多代理类,类太多.同时,一旦接口增加方法,目标对象与代理对象都要维护. + * 如何解决静态代理中的缺点呢?答案是可以使用动态代理方式 + */ +public class ProxyStatic { + public static void main(String[] args) { + ProxyFactory proxy = new ProxyFactory(new UserDaoImpl()); + proxy.save(); + } +} + +interface IUserDao { + void save(); +} + +class UserDaoImpl implements IUserDao { + + private IUserDao userDao; + + @Override + public void save() { + System.out.println("保存数据成功!"); + } +} + +class ProxyFactory implements IUserDao { + private IUserDao userDao; + + public ProxyFactory(IUserDao userDao) { + this.userDao = userDao; + } + + @Override + public void save() { + System.out.println("Transition begin!"); + userDao.save(); + System.out.println("Transition end!"); + } +} -- Gitee From 4d1b79c6ca25f8405b4fe4819497b2a50e0b44d4 Mon Sep 17 00:00:00 2001 From: noLynn <13293871521@163.com> Date: Thu, 5 Jul 2018 16:06:22 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=AC=AC=E5=8D=81=E5=9B=9B=E7=AB=A0=20?= =?UTF-8?q?=E6=B3=9B=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/lynn/genericity/Genericy.java | 42 +++++++++++++++++++ src/main/java/com/lynn/typeinfo/Claze.java | 24 +++++++++++ 2 files changed, 66 insertions(+) create mode 100644 src/main/java/com/lynn/genericity/Genericy.java diff --git a/src/main/java/com/lynn/genericity/Genericy.java b/src/main/java/com/lynn/genericity/Genericy.java new file mode 100644 index 0000000..ffebfce --- /dev/null +++ b/src/main/java/com/lynn/genericity/Genericy.java @@ -0,0 +1,42 @@ +package com.lynn.genericity; + +import com.sun.org.apache.xpath.internal.operations.String; + +import javax.xml.ws.Holder; +import java.util.LinkedList; +import java.util.List; + +/** + * 古老的泛型 + */ +public class Genericy { + // public static void main(String[] args) { +// Holder hodler = new Holder(); +// } + public static void main(String[] args) { + List list = Automobile.list(); + list.add(1); + System.out.println(list); + } +} + +class Automobile { + + public static List list() { + return new LinkedList<>(); + } + + +} + +class Hodler { + private T automobile; + + public Hodler(T automobile) { + this.automobile = automobile; + } + + T get() { + return automobile; + } +} diff --git a/src/main/java/com/lynn/typeinfo/Claze.java b/src/main/java/com/lynn/typeinfo/Claze.java index 1df44fd..505c2a9 100644 --- a/src/main/java/com/lynn/typeinfo/Claze.java +++ b/src/main/java/com/lynn/typeinfo/Claze.java @@ -14,5 +14,29 @@ public class Claze { System.out.println(Void.TYPE == void.class); System.out.println(Long.TYPE == long.class); System.out.println(long.class); + A a = new B(); + a.f(); + if (a instanceof B) { + System.out.println("instanceof B!"); + ((B) a).g(); + } } } + +interface A { + void f(); +} + +class B implements A { + + @Override + public void f() { + System.out.println("f"); + } + + public void g() { + System.out.println("g"); + } + + +} -- Gitee