春雨洗过的太阳 2016-03-07 02:53 采纳率: 0%
浏览 2725
已结题

java单例模式传参问题

用sshexec连接linux
ConnBean connInfo = new ConnBean(remoteAddress, userName, password);
SSHExec sshExec = SSHExec.getInstance(connInfo); 假设每次传过来的conninfo参数是变的,但是debug查看每次都是第一次的参数。
private static SSHExec ssh;
public static SSHExec getInstance(ConnBean conn)
{
if(ssh == null)
ssh = new SSHExec(conn);
return ssh;
}
这个该怎么处理?

  • 写回答

6条回答

  • broust 2016-03-07 03:51
    关注

    if(ssh == null)
    ssh = new SSHExec(conn);
    return ssh;
    }
    所以每次都返回第一次生成的instance啊。
    如果你的场景是有很多remoteAddress,那么这个public static SSHExec getInstance(ConnBean conn)方法修改下,里面用一个hashMap来存已经初始化的实例。
    类似
    if(map.get(conn.getRemoteAddress)==null){
    xxxxx
    }

    评论

报告相同问题?