22上Java无脑解法(自用)

在这里插入图片描述
public String getState() {
return state;
}

public Memento saveStateToMemento() {
return (1) ;
}

public void getStateFromMemento(Memento Memento) {
state = (2) ;
}
}

class CareTaker {
private List mementoList = new ArrayList();

public (3) {
mementoList.add(state);
}

public (4) {
return mementoList.get(index);
}
}
class MementoPaneDemos {
public static void main(String[] args) {
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();
originator.setState(“State #1”);
originator.setState(“State #2”);
careTaker.add( (5) );
originator.setState(“State #3”);
careTaker.add( (6) );
originator.setState(“State #4”);

System.out.println(“Current State:” + originator.getState());
originator.getStateFromMemento(careTaker.get(0));
System.out.println(“First saved State:” + originator.getState());
originator.getStateFromMemento(careTaker.get(1));
System.out.println(“Second saved State:” + originator.getState());
}
}
———————————————分析—————————————————————————

整体来说,难度很低。
———————————————第一问(难易度:中等)————————————————
①public Memento saveStateToMemento() {
return (1) ;
}

分析: 类名作为参数类型,这是必考的一个点

再看方法名saveStateToMemento()中,没有参数,判断出单个方法得不到什么有用的线索

一空先放着,再看第二空。

(前提:往下看完再倒回来)
发现以下信息都没什么用
参数类型是Menento,那么return 回去的也是Memento类型的一个对象

而类Originator中并没有创建一个Menento对象,即:new Memento()

再看到类Menento中,有一个有参构造方法,在创建对象时候,默认执行

综上所述,答案填new Memento(state)

———————————————第二问(难易度:送分)——————————————————

②public void getStateFromMemento(Memento Memento) {
state = (2) ;
}

分析:类名Memento作为参数类型,则需要回到类Memento进行分析,结合getStateFromMemento方法名提示

可知,该空填 Memento.getState
———————————————第三问(难易度:送分)————————————————
class CareTaker {
private List mementoList = new ArrayList();
public (3) {
mementoList.add(state);
}

分析:看到List集合,但其实没怎么用上,不要觉得难,先看我们要答什么问题
我们知道
方法规范的写法是这样的:

方法格式:
修饰符 返回值类型+ 方法名 (参数类型 参数名1,参数类型 参数名2…){
方法体语句;
return 返回值;
}

返回值类型分为两大类:
第一类,无返回值类型:void。
第二类,有返回值类型,返回值的类型就是被返回数据的类型。

再回到原题,从**mementoList.add(state);**不难看出,add就是方法名,变量state在本类中都没有

二选一问题来了,是用 void add(Originator state ) 还是 void add( Memento state )呢?

当然是后者,因为List集合里面存的是Memento

所以答案填 void add( Memento state )

———————————————第四问(难易度:中偏低)————————————————
public (4) {
return mementoList.get(index);
}

分析:如同第三问,但需要知道的是 List<返回值类型>

答案填 Memento get ( ?? index)

可问题又来了,index变量是什么类型的?

我们往下看代码,可以知道是出现了
careTaker.get(0)和careTaker.get(1),所以可以判断这是索引(当然,看到数字直接想到 int)

最终确定答案填 Memento get ( int index)

———————————————第五、六问————————————————

careTaker.add( (5));
careTaker.add( (6) );

分析 :从本类MementoPaneDemos往下分析
Originator originator = new Originator();
CareTaker careTaker = new CareTaker();

已知有两个构造方法,那肯定是要引用对象 的

二选一问题,用originator 或careTaker

继续往下分析

类originator中被调用了setState方法和get方法,唯独saveStateToMemento方法没被调用(可能是这个)
类careTaker中被调用了get方法和add方法(注意!该空就是写在add方法里面,必不可能是重复调用)

综上所述,答案填 originator.saveStateToMemento()

技巧:行行代码都有用,处处都是精心设计,答案就在其中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值