Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
return";常数;来自java方法的值_Java_Memoization - Fatal编程技术网

return";常数;来自java方法的值

return";常数;来自java方法的值,java,memoization,Java,Memoization,我不确定这是否可行,所以我问你们。我想写一个方法,知道以前是否访问过它,以及它是否返回了上次访问时的相同值。我不能为此使用字段/实例变量 这就是我想要做的,没有实例变量foo: private FooObject foo = null; public int setFoo(FooObject in) { if(foo == null) foo = in; return foo.getX(); } 这能做到吗 知道以前有没有去过 知道以前发生的事情需要记忆,又名

我不确定这是否可行,所以我问你们。我想写一个方法,知道以前是否访问过它,以及它是否返回了上次访问时的相同值。我不能为此使用字段/实例变量

这就是我想要做的,没有实例变量foo:

private FooObject foo = null;
public int setFoo(FooObject in)
{
    if(foo == null)
        foo = in;

    return foo.getX();
}
这能做到吗

知道以前有没有去过

知道以前发生的事情需要记忆,又名。因此,你需要一些东西来储存这些知识;你无法避免

知道以前有没有去过


知道以前发生的事情需要记忆,又名。因此,你需要一些东西来储存这些知识;您无法避免它。

不使用实例变量?不,不可能。您需要一种方法让方法在调用之间“记住”某些内容-局部变量不起作用,它必须是在方法调用之外“存在”的内容。这就是实例变量的作用:保存状态,从所有实例方法可见。

不使用实例变量吗?不,不可能。您需要一种方法让方法在调用之间“记住”某些内容-局部变量不起作用,它必须是在方法调用之外“存在”的内容。这就是实例变量的作用:保存状态,从所有实例方法中都可见。

我同意@Oli Charlesworth的观点,没有状态你就无法做到这一点。但使用字段保存状态只是众多选项之一。例如,可以使用system.setProperty()和system.getProperty()将状态保存为系统属性,或者将状态保存到文件中。您甚至可以将状态保存到数据库。

我同意@Oli Charlesworth的观点,没有状态,您就无法执行此操作。但使用字段保存状态只是众多选项之一。例如,可以使用system.setProperty()和system.getProperty()将状态保存为系统属性,或者将状态保存到文件中。您甚至可以将状态保存到数据库。

您可以使用缓存。从缓存中读取以查找输入。如果输入已经在缓存中,则从缓存返回值。如果没有,则将条目放入缓存并返回新的计算值

CacheManager singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
manager.addCache(memoryOnlyCache);
Cache cache = singletonManager.getCache("testCache");
添加新条目

Element element = new Element("key1", "value1");
cache.put(element);
在chache中寻找:

Element element = cache.get("key1");
Object value = element.getObjectValue();
删除:

cache.remove("key1");
您可以将其持久化到磁盘


有关详细信息,请参见中的。您可以使用缓存。从缓存中读取以查找输入。如果输入已经在缓存中,则从缓存返回值。如果没有,则将条目放入缓存并返回新的计算值

CacheManager singletonManager = CacheManager.create();
Cache memoryOnlyCache = new Cache("testCache", 5000, false, false, 5, 2);
manager.addCache(memoryOnlyCache);
Cache cache = singletonManager.getCache("testCache");
添加新条目

Element element = new Element("key1", "value1");
cache.put(element);
在chache中寻找:

Element element = cache.get("key1");
Object value = element.getObjectValue();
删除:

cache.remove("key1");
您可以将其持久化到磁盘


有关详细信息,请参见中的。您可以使用。这允许您跨应用程序加载存储内存,因此如果希望每次加载时都重新启动内存,则需要从Preferences API中清除该值。

您可以使用。这允许您跨应用程序加载存储内存,因此,如果您希望每次加载时都重新启动内存,则需要清除首选项API中的值。

可能重复没有实例变量的情况下执行此操作有特殊原因吗?这是一个学校练习/比赛。我们正在创建一个游戏,对于我们可以对这个游戏进行哪些更改,有一些规则。其中之一是我们不能添加更多的实例变量。可能的重复是否有特殊原因使您希望在没有实例变量的情况下执行此操作?这是一个学校练习/竞赛。我们正在创建一个游戏,对于我们可以对这个游戏进行哪些更改,有一些规则。其中之一是我们不能添加更多的实例变量。好的,谢谢你的回复。我还需要想点别的:)好的,谢谢你的回复。我还需要弄明白另外一件事:)在这种情况下,我需要将CacheManager声明为实例变量,对吗?就像静态变量一样,在静态块中初始化,我不能在这个方法之外写入任何变量。实际上,我只有其他方法可以使用。可以写入文件以存储值吗?在这种情况下,我需要将CacheManager声明为实例变量,对吗?像静态变量一样,在静态块中初始化。我不能写入此方法之外的任何变量。实际上,我只有其他方法可以使用。可以写入文件以存储值吗?