Java 在方法中实现接口
你好,我被指派做以下工作 使用以下方法编写名为DelimitedTextIO的新Java接口: o字符串toText(字符分隔符) -此方法返回一个字符串,其中包含 将类实现为文本,每个元素用分隔符分隔Java 在方法中实现接口,java,class,variables,interface,implementation,Java,Class,Variables,Interface,Implementation,你好,我被指派做以下工作 使用以下方法编写名为DelimitedTextIO的新Java接口: o字符串toText(字符分隔符) -此方法返回一个字符串,其中包含 将类实现为文本,每个元素用分隔符分隔 提供分隔符 o无效对象(扫描仪输入) -此方法使用提供的扫描程序输入来解析表示实现类的数据的分隔文本,并初始化 对象实例变量和解析后的值。要使用的分隔符 在调用此方法之前,必须为扫描仪输入指定。> 我不知道如何创建toObject部分。我遇到的问题是用其他方法实现它 import java.ut
提供分隔符 o无效对象(扫描仪输入) -此方法使用提供的扫描程序输入来解析表示实现类的数据的分隔文本,并初始化 对象实例变量和解析后的值。要使用的分隔符 在调用此方法之前,必须为扫描仪输入指定。> 我不知道如何创建toObject部分。我遇到的问题是用其他方法实现它
import java.util.*;
import java.awt.event.KeyEvent;
public class Explorer extends Occupant{
private String name;
private Maze maze;
public Explorer(Square location, Maze maze, String name){
super(location);
this.maze = maze;
this.name = name;
maze.lookAround(location);
}
public Explorer (Maze maze){
this.maze = new Maze();
}
public String name(){
return name;
}
public void move(int key){
Square sq = location();
if(key == KeyEvent.VK_UP || KeyEvent.VK_KP_UP == key){
if(!sq.wall(Square.UP)){
this.moveTo(maze.getSquare(sq.row()-1, sq.col()));
}
}
else if(key == KeyEvent.VK_RIGHT || KeyEvent.VK_KP_RIGHT == key){
if(!sq.wall(Square.RIGHT)){
this.moveTo(maze.getSquare(sq.row(), sq.col()+1));
}
}
else if(key == KeyEvent.VK_DOWN || KeyEvent.VK_KP_DOWN == key){
if(!sq.wall(Square.DOWN)){
this.moveTo(maze.getSquare(sq.row()+1, sq.col()));
}
}
else if(key == KeyEvent.VK_LEFT || KeyEvent.VK_KP_LEFT == key){
if(!sq.wall(Square.LEFT)){
this.moveTo(maze.getSquare(sq.row(), sq.col()-1));
}
}
}
public void moveTo(Square s){
super.moveTo(s);
s.enter();
maze.lookAround(s);
}
public void toObject(Scanner input){
super.toObject(input);
this.name = input.next();
}
public String toText(char delimiter){
String x = this.getClass().getName() + delimiter + location().row() + delimiter + location().col() + delimiter + name;
return x;
}
}
我不知道如何使用toObject方法。如果我做对了,我应该试着穿过迷宫吗?感谢您的帮助。谢谢。这项作业规定得很差。如果您正在创建一个接口,那么您不必实现任何东西。接口不能有具体的方法(在Java8中,它们可以有默认方法,但这是不同的)。名称
toObject
的命名很糟糕,因为它在语义上与其他toXxx
方法相反。这些方法,如toString()
对this
进行操作,并将this
的值转换为另一种形式。toObject
的规范在另一个方向上运行。最后,给出了toObject
的定义,它是有意义的。。。(继续)对不起,我应该提到这一点。应该是相反的。基本上,它应该反转toString()方法。。。。仅作为类的静态方法,因为它旨在从外部存储反序列化对象。它应该被定义为类似于publicstaticexplorer反序列化(scanners)
的东西,并且应该返回一个新构造和初始化的实例。或者可能公共静态资源管理器fromString(扫描器)
。还可以考虑使用它指定一个实例,然后完全重写该实例的内部状态。这在几乎任何语言中都是一种反模式,在任何商业软件中都会有可怕的代码气味。@JimGarrison我认为它应该就地修改实例,就像Externalizable.readExternal()那样(至少我是这样理解需求的)。至于命名,肯定还有改进的余地……我在代码示例中没有看到toText()
方法。我有一种强烈的感觉,一旦您尝试实现它,您将更好地理解如何在toObject()
方法中使用该扫描仪。