首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用保存类保存值,并在调用时打印以前保存的值。

使用保存类保存值,并在调用时打印以前保存的值。
EN

Stack Overflow用户
提问于 2013-12-11 03:04:41
回答 3查看 81关注 0票数 1

我正在为期末考试做准备,我很困惑如何处理这个问题。

编写一个名为Saver的泛型类。它应该有一个名为save的方法。此方法应存储传递的值并返回前一个值--例如,该类应支持以下行为:

代码语言:javascript
复制
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

我不需要代码,我只想知道如何完成这个任务?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-11 03:11:42

保护程序有一个您分配给它并返回其旧值的字段。

代码语言:javascript
复制
class Saver<T> {
    T value;

    Saver(T value) {
        this.value = value;
    }

    T save(T value) {
        T old = this.value;
        this.value = value;
        return old;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2013-12-11 03:16:51

像这样的怎么样?

代码语言:javascript
复制
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
}

当它在我的机器上运行时,如下所示-

代码语言:javascript
复制
13
42
-999
foo
bar
why
票数 1
EN

Stack Overflow用户

发布于 2013-12-11 03:22:51

您需要创建一个泛型类,然后必须将前面的值存储在实例变量中,我为您发布了一个代码。

代码语言:javascript
复制
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;         
}

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20509771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档