如何保存从方法中获取的变量以供以后在Java中使用?

如何保存从方法中获取的变量以供以后在Java中使用?,java,sql,variables,Java,Sql,Variables,我有三个班,主要班,Pin班和员工班。(将来将添加更多类) Main类运行一个程序,提示用户从Pin类中的方法输入密码。使用SQL将密码发送到数据库,以便通过Employee和Pin类中的方法进行验证。如果密码匹配,则返回该员工的ID 我遇到的问题是保存ID。我检索了ID,但我希望能够在程序的其余部分使用此ID。我想将其保存在Employee类中,但它是在Pin类的方法中返回的。如何保存此ID以供Employee类或任何类使用?嗯,如果我理解正确,您可能需要Employee和Pin的组合 Emp

我有三个班,主要班,Pin班和员工班。(将来将添加更多类)

Main类运行一个程序,提示用户从Pin类中的方法输入密码。使用SQL将密码发送到数据库,以便通过Employee和Pin类中的方法进行验证。如果密码匹配,则返回该员工的ID


我遇到的问题是保存ID。我检索了ID,但我希望能够在程序的其余部分使用此ID。我想将其保存在Employee类中,但它是在Pin类的方法中返回的。如何保存此ID以供Employee类或任何类使用?

嗯,如果我理解正确,您可能需要Employee和Pin的组合

Employee e = ...

e.setPin(pin);
或者问题是,您不知道如何将特定pin分配给员工,以便在下一次运行应用程序时仍将其分配给该员工

更新:收到更多信息后:需要为程序创建应用程序上下文。由于它似乎是一个一次只有一个用户的独立应用程序,因此在某些类中,它可能是一个静态字段

如果应用程序是多用户应用程序,则每个用户的上下文都需要是静态的

如果应用程序是web应用程序,则您的应用程序范围是
会话
,该会话将在注销期间终止。(这实际上并不精确,因为会话是会话范围,而应用程序范围实际上是应用程序的上下文。但在您的例子中,pin是会话范围。)

独立/单用户应用程序的示例:

public class ApplicationContext {

    static ApplicationContext CTX;
    public static ApplicationContext get() {
        if( CTX == null ) {
            CTX = new ApplicationContext();
        }
        return CTX;
    }

    private Pin pin;
    public Pin getPin() { return pin; }
    public void setPin(Pin pin) { this.pin = pin; }

    // ... add more stuff here ...

    public void logout() {
        CTX = null;
    }
}

您需要的是所谓的应用程序范围对象的概念。 有各种各样的库可以使用JavaEE,但我假设您使用的是JavaSE。 apache的应用程序也允许在JavaSE中执行这种作用域bean。看见像这样,您可以创建一个@ApplicationScoped bean,您可以在其中跨应用程序存储值

请知道还有其他可能的作用域,例如SessionScoped(HTTP)、WindowsScoped(BrowserWindow)等


本例将为您指出正确的方向,但可能有比在您的案例中使用应用程序范围更好的方法。

这正是我所做的。我加了一个二传手和接球手。但我认为问题在于,当我在employee类的方法中使用setter时,它不会保存返回的内容。它只返回0。main类调用pin类中的方法,pin类调用employee类中的方法。如何打印从检索主类中employee类中ID的方法返回的变量?pin应在程序运行的整个过程中保存,直到按下注销按钮,程序重新启动。目的是在需要有关员工及其事务历史记录的信息时,使用pin访问sql数据库。例如,当我们成功登录时,employee类将询问员工的职位“cook”、“Bacher”、“manager”,它将id发送到数据库,根据id查找职位。返回职位并根据权限级别设置界面。