如何从静态方法中调用非静态方法?

时间:2016-10-20 11:55:22

标签: spring-mvc cookies static memcached non-static

我有一个实用程序Cookie类。其中有一个getCookie(),试图在服务实现类中调用writetoCache()。但是在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()。我正在使用memcached - import net.spy.memcached.MemcachedClient;

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

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

1 个答案:

答案 0 :(得分:0)

如果您的 getCookie 位于 Cookie util中,那么您不会在memcache客户端实例上调用 writeToCache 而不是s Cookie 的方法。所以有些东西不对,请仔细检查一下。

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

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

比针对实例调用方法:

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