我正在为期末考试做准备,我很困惑如何处理这个问题。
编写一个名为Saver的泛型类。它应该有一个名为save的方法。此方法应存储传递的值并返回前一个值--例如,该类应支持以下行为:
Saver<Integer> saver1 = new Saver(13);
System.out.println(saver2.save(42)); // prints 13
System.out.println(saver2.save(-999)); // prints 42
System.out.println(saver2.save(2013)); // prints -999
Saver<String> saver2 = new Saver("foo");
System.out.println(saver2.save("bar")); // prints foo
System.out.println(saver2.save("why")); // prints bar
System.out.println(saver2.save("yar")); // prints why我不需要代码,我只想知道如何完成这个任务?
发布于 2013-12-11 03:11:42
保护程序有一个您分配给它并返回其旧值的字段。
class Saver<T> {
T value;
Saver(T value) {
this.value = value;
}
T save(T value) {
T old = this.value;
this.value = value;
return old;
}
}发布于 2013-12-11 03:16:51
像这样的怎么样?
public static class Saver<T> {
public Saver(T value) {
super();
save(value);
}
T value = null; // A T value.
public T save(T value) {
try {
return this.value; // return the current value.
} finally {
this.value = value; // rely on finally to change the stored value.
}
}
}
public static void main(String[] args) {
Saver<Integer> saver1 = new Saver<Integer>(13);
System.out.println(saver1.save(42)); // prints 13
System.out.println(saver1.save(-999)); // prints 42
System.out.println(saver1.save(2013)); // prints -999
Saver<String> saver2 = new Saver<String>("foo");
System.out.println(saver2.save("bar")); // prints foo
System.out.println(saver2.save("why")); // prints bar
System.out.println(saver2.save("yar")); // prints why
}当它在我的机器上运行时,如下所示-
13
42
-999
foo
bar
why发布于 2013-12-11 03:22:51
您需要创建一个泛型类,然后必须将前面的值存储在实例变量中,我为您发布了一个代码。
public class Saver<T> {
private T value;
public Saver(T value) {
this.value = value;
}
public T save(T newValue) {
T oldValue = this.value;
this.value = newValue;
return oldValue;
}}
https://stackoverflow.com/questions/20509771
复制相似问题