- 课堂交流区
- 帖子详情
置顶
城堡的Handler类
<p><span style="font-family: Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 微软雅黑, Helvetica, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">在第5周的城堡程序那里,我们做的Handler是需要在构造的时候注入Game的。那么,在学习了内部类之后,能否用Game的内部类来实现这些Handler呢?应该怎么做?</span></p>
22
回复
-
<p>Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能</p><p><code class="brush:java;toolbar:false" >// Game.java public class Game { private Room currentRoom; private HashMap<String, Handler> handlers = new HashMap<String, Handler>(); protected ArrayList<String> cmds = new ArrayList<String>(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }</code></p>添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能 // Game.java public class Game { private Room currentRoom; private HashMap handlers = new HashMap(); protected ArrayList cmds = new ArrayList(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能 // Game.java public class Game { private Room currentRoom; private HashMap handlers = new HashMap(); protected ArrayList cmds = new ArrayList(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能 // Game.java public class Game { private Room currentRoom; private HashMap handlers = new HashMap(); protected ArrayList cmds = new ArrayList(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能//Game.javapublicclassGame{privateRoomcurrentRoom;privateHashMaphandlers=newHashMap();protectedArrayListcmds=newArrayList();publicGame(){handlers.put("bye",newHandler(){@OverridepublicvoiddoCmd(Stringword){}@OverridepublicbooleanisBye(){returntrue;}});handlers.put("help",newHandler(){@OverridepublicvoiddoCmd(Stringword){System.out.println("迷路了吗?你可以做的命令有:"+cmds);System.out.println("如:\tgoeast");}@Override...添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能 // Game.java public class Game { private Room currentRoom; private HashMap handlers = new HashMap(); protected ArrayList cmds = new ArrayList(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }添加评论
-
<code class="brush:java;toolbar:false" >//Handler.java public abstract class Handler { public abstract void doCmd(String cmd); public boolean isBye() { return false; } } //Game.java public class Game { private Room currentRoom; private HashMap<String, Handler> handlers = new HashMap<String, Handler>(); public Game() { handlers.put("go", new Handler() { @Override public void doCmd(String cmd) { goRoom(cmd); } }); handlers.put("help", new Handler() { @Override public void doCmd(String cmd) { System.out.println("迷路了吗?你可以做的命令有:go bye help"); System.out.println("如:\tgo east"); } }); handlers.put("bye", new Handler() { @Override public void doCmd(String cmd) { } @Override public boolean isBye() { return true; } }); createRooms(); } }</code><p><p><br ></p></p>添加评论
-
<p><code class="brush:java;toolbar:false" >//Handler.java public abstract class Handler { public abstract void doCmd(String cmd); public boolean isBye() { return false; } } //Game.java public class Game { private Room currentRoom; private HashMap<String, Handler> handlers = new HashMap<String, Handler>(); public Game() { handlers.put("go", new Handler() { @Override public void doCmd(String cmd) { goRoom(cmd); } }); handlers.put("help", new Handler() { @Override public void doCmd(String cmd) { System.out.println("迷路了吗?你可以做的命令有:go bye help"); System.out.println("如:\tgo east"); } }); handlers.put("bye", new Handler() { @Override public void doCmd(String cmd) { } @Override public boolean isBye() { return true; } }); createRooms(); } }</code></p>添加评论
-
<p>//Handler.java</p><p>public abstract class Handler {</p><p> public abstract void doCmd(String cmd);</p><p> public boolean isBye() {</p><p> return false;</p><p> }</p><p>}</p><p>//Game.java</p><p>public class Game {</p><p> private Room currentRoom;</p><p> private HashMap<String, Handler> handlers = new HashMap<String, Handler>(); </p><p> public Game() </p><p> {</p><p> handlers.put("go", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> goRoom(cmd);</p><p> }</p><p> }); </p><p> handlers.put("help", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> System.out.println("迷路了吗?你可以做的命令有:go bye help");</p><p> System.out.println("如:\tgo east");</p><p> }</p><p> });</p><p> handlers.put("bye", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> }</p><p> @Override</p><p> public boolean isBye() {</p><p> return true;</p><p> }</p><p> });</p><p> createRooms();</p><p> }</p><p> }</p><p><br ></p>添加评论
-
<p><img src="https://nos.netease.com/edu-image/b83fa5f9fc89458ebbf8c306d25e760e.jpg" /></p>添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能//Game.javapublicclassGame{privateRoomcurrentRoom;privateHashMaphandlers=newHashMap();protectedArrayListcmds=newArrayList();publicGame(){handlers.put("bye",newHandler(){@OverridepublicvoiddoCmd(Stringword){}@OverridepublicbooleanisBye(){returntrue;}});handlers.put("help",newHandler(){@OverridepublicvoiddoCmd(Stringword){System.out.println("迷路了吗?你可以做的命令有:"+cmds);System.out.println("如:\tgoeast");}@Override...添加评论
-
Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能//Game.javapublicclassGame{privateRoomcurrentRoom;privateHashMaphandlers=newHashMap();protectedArrayListcmds=newArrayList();publicGame(){handlers.put("bye",newHandler(){@OverridepublicvoiddoCmd(Stringword){}@OverridepublicbooleanisBye(){returntrue;}});handlers.put("help",newHandler(){@OverridepublicvoiddoCmd(Stringword){System.out.println("迷路了吗?你可以做的命令有:"+cmds);System.out.println("如:\tgoeast");}@Override...添加评论
-
<p>package shapes;</p><p>public class MyPic {<br > public static void main(String[] args) <br > {<br > Picture pic = new Picture(420,300);<br > Circle c1 = new Circle(320,40,80);<br > Rectangle r1 = new Rectangle(100, 100, 100, 100);<br > Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);<br > Line l1 = new Line(330,205,400,205);<br > Line l2 = new Line(300,200,200,100);<br > Line l3 = new Line(200,200,200,1</p><p><br ></p>添加评论
-
<p>package shapes;</p><p>public class MyPic {<br > public static void main(String[] args) <br > {<br > Picture pic = new Picture(420,300);<br > Circle c1 = new Circle(320,40,80);<br > Rectangle r1 = new Rectangle(100, 100, 100, 100);<br > Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);<br > Line l1 = new Line(330,205,400,205);<br > Line l2 = new Line(300,200,200,100);<br > Line l3 = new Line(200,200,200,1</p><p><br ></p>添加评论
-
<p>package shapes;</p><p>public class MyPic {<br > public static void main(String[] args) <br > {<br > Picture pic = new Picture(420,300);<br > Circle c1 = new Circle(320,40,80);<br > Rectangle r1 = new Rectangle(100, 100, 100, 100);<br > Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);<br > Line l1 = new Line(330,205,400,205);<br > Line l2 = new Line(300,200,200,100);<br > Line l3 = new Line(200,200,200,1</p><p><br ></p>添加评论
-
<p>package shapes;</p><p>public class MyPic {<br > public static void main(String[] args) <br > {<br > Picture pic = new Picture(420,300);<br > Circle c1 = new Circle(320,40,80);<br > Rectangle r1 = new Rectangle(100, 100, 100, 100);<br > Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);<br > Line l1 = new Line(330,205,400,205);<br > Line l2 = new Line(300,200,200,100);<br > Line l3 = new Line(200,200,200,1</p><p><br ></p>添加评论
-
<p>Handler为接口,在Game.java构造函数里用匿名类完成go,bye,help功能 // Game.java public class Game { private Room currentRoom; private HashMap handlers = new HashMap(); protected ArrayList cmds = new ArrayList(); public Game() { handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有:" + cmds); System.out.println("如:\tgo east"); } @Override public boolean isBye() { return false; } }); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } @Override public boolean isBye() { return false; } }); for (String cmd : handlers.keySet()) { cmds.add(cmd); } createRooms(); } // Handler.java package castle; public class Handler { public void doCmd(String word) { } public boolean isBye() { return false; } }</p>添加评论
-
<p>//Handler.java</p><p>public abstract class Handler {</p><p> public abstract void doCmd(String cmd);</p><p> public boolean isBye() {</p><p> return false;</p><p> }</p><p>}</p><p>//Game.java</p><p>public class Game {</p><p> private Room currentRoom;</p><p> private HashMap<String, Handler> handlers = new HashMap<String, Handler>(); </p><p> public Game() </p><p> {</p><p> handlers.put("go", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> goRoom(cmd);</p><p> }</p><p> }); </p><p> handlers.put("help", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> System.out.println("迷路了吗?你可以做的命令有:go bye help");</p><p> System.out.println("如:\tgo east");</p><p> }</p><p> });</p><p> handlers.put("bye", new Handler() {</p><p> @Override</p><p> public void doCmd(String cmd) {</p><p> }</p><p> @Override</p><p> public boolean isBye() {</p><p> return true;</p><p> }</p><p> });</p><p> createRooms();</p><p> }</p><p> }</p><p><br ></p><p><br ></p>添加评论
-
<p>package shapes;</p><p>public class MyPic {<br > public static void main(String[] args) <br > {<br > Picture pic = new Picture(420,300);<br > Circle c1 = new Circle(320,40,80);<br > Rectangle r1 = new Rectangle(100, 100, 100, 100);<br > Triangle t1 = new Triangle(100, 100, 200, 100, 150, 50);<br > Line l1 = new Line(330,205,400,205);<br > Line l2 = new Line(300,200,200,100);<br > Line l3 = new Line(200,200,200,1</p><p><br ></p><p><br ></p>添加评论
-
<p><code class="brush:java;toolbar:false" >public abstract class Handler { public abstract void doCmd(String word); public boolean isBye(){ return false; } } public Game() { // handlers.put("go",new HandlerGo(this)); // handlers.put("bye",new HandlerBye(this)); // handlers.put("help",new HandlerHelp(this)); // createRooms(); handlers.put("go", new Handler() { @Override public void doCmd(String word) { goRoom(word); } }); handlers.put("help", new Handler() { @Override public void doCmd(String word) { System.out.println("迷路了吗?你可以做的命令有go bye help"); System.out.println("如:\tgo east"); } }); handlers.put("bye", new Handler() { @Override public void doCmd(String word) { } @Override public boolean isBye() { return true; } }); createRooms(); }</code>将另外三个继承自Handler的子类注释掉即可,</p>添加评论
点击加载更多
到底啦~