Java:自动记忆

Alb*_*ert 15 python java annotations decorator memoization

我的代码中有一些函数,它们使用memoization很有意义(似乎甚至是强制性的).

我不想单独为每个功能手动实现它.有没有办法(例如在Python中)我可以使用注释或做其他事情,所以我自动在我想要的那些函数上得到它?

oks*_*ayt 13

Spring 3.1现在提供了一个@Cacheable注释,它正是这样做的.

顾名思义,@ Cacheable用于划分可缓存的方法 - 即,将结果存储到缓存中的方法,以便在后续调用(具有相同的参数)时,返回缓存中的值而不必实际执行该方法.


Jac*_*son 6

我遇到了一个名为Tek271的memoization库,它似乎使用注释来记忆你描述的函数.


Ben*_*ine 5

我认为没有语言的本地化记忆实现。

但是,作为方法的装饰器,您可以轻松实现它。您必须维护一个Map:Map的键是参数,值是结果。

这是一个单参数方法的简单实现:

Map<Integer, Integer> memoizator = new HashMap<Integer, Integer>();

public Integer memoizedMethod(Integer param) {

    if (!memoizator.containsKey(param)) {
        memoizator.put(param, method(param));
    } 

    return memoizator.get(param);
}
Run Code Online (Sandbox Code Playgroud)