String tokenSingle = menuService.buildToken(userMap.get("currentTeamMemberName"), userMap.get("userId"));中的buildToken方法在servic层的SystemMenuService下, 已知方法private String buildToken(String currentTeamMemberName,String userId) { Map<String, String> kv = new LinkedHashMap<>(); kv.put("userId", userId); kv.put("currentTeamMemberName",currentTeamMemberName); kv.put("salt", "salt"); String signature = Sha1Crypto.encode(JsonHelper.getInstance().write(kv)); kv.remove("salt"); kv.put("signature", signature); kv.put("ts", System.currentTimeMillis()+""); String offset = Configuration.getInstance().getProperty("indicatorPlatformOffset"); if(offset == null || offset.trim().length() == 0){ offset = 1000 * 60 * 5 + ""; } kv.put("offset", offset); String token = JsonHelper.getInstance().write(kv);//Map转JSON String base64Token = Base64Codec.encode(token);//base64编码 return base64Token; } 会报错'buildToken(java.lang.String, java.lang.String)' has private access in 'com.bonc.mutirent.service.SystemMenuService' 我不想让方法buildToken为public,该如何解决?
时间: 2024-03-15 20:46:58 浏览: 86
如果您不想将buildToken方法设置为public,可以在同一个包下创建一个辅助类,在该辅助类中调用buildToken方法,并将辅助类的方法设置为public,这样就可以在其他包中使用该辅助类的方法,达到不将buildToken方法公开的效果。
示例代码如下:
在com.bonc.mutirent.service包下创建一个新的辅助类TokenHelper:
```
package com.bonc.mutirent.service;
import java.util.LinkedHashMap;
import java.util.Map;
import com.bonc.mutirent.util.JsonHelper;
import com.bonc.mutirent.util.Sha1Crypto;
import com.bonc.mutirent.util.Base64Codec;
import com.bonc.mutirent.util.Configuration;
public class TokenHelper {
public static String buildToken(String currentTeamMemberName, String userId) {
Map<String, String> kv = new LinkedHashMap<>();
kv.put("userId", userId);
kv.put("currentTeamMemberName", currentTeamMemberName);
kv.put("salt", "salt");
String signature = Sha1Crypto.encode(JsonHelper.getInstance().write(kv));
kv.remove("salt");
kv.put("signature", signature);
kv.put("ts", System.currentTimeMillis()+"");
String offset = Configuration.getInstance().getProperty("indicatorPlatformOffset");
if(offset == null || offset.trim().length() == 0){
offset = 1000 * 60 * 5 + "";
}
kv.put("offset", offset);
String token = JsonHelper.getInstance().write(kv);//Map转JSON
String base64Token = Base64Codec.encode(token);//base64编码
return base64Token;
}
}
```
在需要使用buildToken方法的地方,可以直接调用TokenHelper.buildToken方法,例如:
```
String tokenSingle = TokenHelper.buildToken(userMap.get("currentTeamMemberName"), userMap.get("userId"));
```
这样就可以在不将buildToken方法公开的情况下,通过辅助类的方式调用该方法了。
阅读全文