如何从静态方法内部调用非静态方法?

How do I call a non-static method from inside a static method?

我有一个实用程序 Cookie class。其中有一个 getCookie() ,试图在服务实现中调用 writetoCache() class。但在 getCookie() 内部,writetoCache() 未被识别。

这是 getCookie()。

public static String getCookie(HttpServletRequest request, HttpServletResponse response, String name, String mse){
//String value = null;
Cookie[] cookies = request.getCookies();
if(cookies != null){
    for(Cookie cookie : cookies){
        if(cookie.getName().equals(name)){
            System.out.println(cookie.getValue());
            System.out.println(cookie.getName());
            System.out.println(cookie.getMaxAge());
            writeToCache(cookie.getName(),cookie.getValue(), 300 );
            return cookie.getValue();
        }
    }
}
return null;
 }

这是 memcached 服务中的 writetoCache() class。我正在使用内存缓存 - import net.spy.memcached.MemcachedClient;

@Override
public void writeToCache(String key, String value, int expiry) {    
    c.set(key, expiry, value);  
}

一种方法是在静态方法class中创建非静态方法class的实例。但它不起作用,因为类型不匹配。

如果您的 getCookieCookie 实用程序中,那么您就不会调用 writeToCache 在 memcache 客户端实例上,而不是作为 Cookie 的方法。所以有些地方不对劲,仔细检查一下。

无论如何,不​​要创建新实例,让你的内存缓存客户端成为单例:

private static MemCachedClient mcc = new MemCachedClient("foo");

比对实例调用方法:

mcc.writeToCache(cookie.getName(),cookie.getValue(), 300 );