From 33758ffbb8b60c8e7a446a8bed1651ae390e3b9b Mon Sep 17 00:00:00 2001 From: wuzhenquan <782754354@qq.com> Date: Sun, 12 Apr 2020 23:13:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=86=85=E9=83=A8=E7=B1=BB=E7=BB=83=E4=B9=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/github/hcsp/polymorphism/Home.java | 2 +- src/main/java/com/github/hcsp/polymorphism/Home2.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/github/hcsp/polymorphism/Home.java b/src/main/java/com/github/hcsp/polymorphism/Home.java index 2a6d11a..a0259d3 100644 --- a/src/main/java/com/github/hcsp/polymorphism/Home.java +++ b/src/main/java/com/github/hcsp/polymorphism/Home.java @@ -21,7 +21,7 @@ private void log(Cat cat) { // 在这个类里会产生一个编译错误 // 请思考一下为什么 // 并将此类改写成非静态的内部类,以修复此问题 - static class CatNameCollector implements Consumer { + class CatNameCollector implements Consumer { private List catNames = new ArrayList<>(); @Override diff --git a/src/main/java/com/github/hcsp/polymorphism/Home2.java b/src/main/java/com/github/hcsp/polymorphism/Home2.java index ed83c31..dc3dd6d 100644 --- a/src/main/java/com/github/hcsp/polymorphism/Home2.java +++ b/src/main/java/com/github/hcsp/polymorphism/Home2.java @@ -8,7 +8,7 @@ public class Home2 { List cats = new ArrayList<>(); public List getCatNames() { - CatNameCollector collector = new CatNameCollector(); + CatNameCollector collector = new CatNameCollector(new Home2()); cats.forEach(collector); return collector.getCatNames(); } @@ -25,10 +25,15 @@ static class CatNameCollector implements Consumer { // 而是引入一个外围类的实例以调用外围类的实例方法 // private Home2 home; private List catNames = new ArrayList<>(); + private Home2 home; + + public CatNameCollector(Home2 home) { + this.home = home; + } @Override public void accept(Cat cat) { - log(cat); + home.log(cat); catNames.add(cat.getName()); }