如何从静态方法内部调用非静态方法?
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的实例。但它不起作用,因为类型不匹配。
如果您的 getCookie 在 Cookie 实用程序中,那么您就不会调用 writeToCache 在 memcache 客户端实例上,而不是作为 Cookie 的方法。所以有些地方不对劲,仔细检查一下。
无论如何,不要创建新实例,让你的内存缓存客户端成为单例:
private static MemCachedClient mcc = new MemCachedClient("foo");
比对实例调用方法:
mcc.writeToCache(cookie.getName(),cookie.getValue(), 300 );
我有一个实用程序 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的实例。但它不起作用,因为类型不匹配。
如果您的 getCookie 在 Cookie 实用程序中,那么您就不会调用 writeToCache 在 memcache 客户端实例上,而不是作为 Cookie 的方法。所以有些地方不对劲,仔细检查一下。
无论如何,不要创建新实例,让你的内存缓存客户端成为单例:
private static MemCachedClient mcc = new MemCachedClient("foo");
比对实例调用方法:
mcc.writeToCache(cookie.getName(),cookie.getValue(), 300 );