首页 > 解决方案 > 如何在其他类中使用 Singleton 实例

问题描述

我正在使用下面的单例模式来创建用户,以便我的程序知道用户已登录。我试图在我的 JavaFx 程序的不同页面中显示用户名,所以我想使用来自的用户名详细信息多个类中的实例。当我尝试使用Usersession.toString时,它说不能在静态上下文中使用非静态方法。我该如何解决?

public final class UserSession {

    private static UserSession instance;

    private String userName;


    private UserSession(String userName) {
        this.userName = userName;
    }

    public static UserSession getInstace(String userName) {
        if(instance == null) {
            instance = new UserSession(userName);
        }
        return instance;
    }

    public String getUserName() {
        return userName;
    }

    public void cleanUserSession() {
        userName = "";// or null

    }

    @Override
    public String toString() {
        return "UserSession{" +
                "userName='" + userName + "}";
    }
}

标签: javajavafxsingleton

解决方案


实际上,您试图在没有实例的情况下访问方法。正确的方法如下:

UserSession.getInstace("你的用户名详细信息").toString();

然后它将根据您的 toString() 方法返回以下详细信息: UserSession{userName='your username details}


推荐阅读