gpt4 book ai didi

java - 对于所有扩展类仅访问一次静态变量

转载 作者:行者123 更新时间:2023-12-02 03:02:25 24 4
gpt4 key购买 nike

我的要求是,我有一个提供身份验证 token (String)的身份验证类,并且该 token 可以在所有其他类中使用。我编写了一小段代码,但不幸的是所有其他类都单独生成身份验证 token 。所以每个类都有一个身份验证 token 。但我很快做了一些改变,如下所示。请看看这是否是正确的方法或者是否有更好的方法?

public class AuthProvider {
public static String authKey;
public static String provideAuth() {
AuthProvider pro = new AuthProvider();
String key = pro.generateAuthKey();
authKey = key;
return key;
}
private String generateAuthKey() {
Random rand = new Random();
int n = rand.nextInt(5000) + 1;
return String.valueOf(n);
}
}

上面是我的身份验证提供程序类,它向所有其他类提供身份验证 token

现在我的子类“FirstClass”需要身份验证 token 来执行其他操作,如下

public class FirstClass extends AuthProvider {

public String getValueFromFirstClass() {
AuthProvider.provideAuth();
String s = AuthProvider.authKey;
return "FirstClassAuth: " + s;
}
}

我的第二个子类名为 SecondClass ,它将成为主类,因为 main 方法调用此类中的方法,该方法负责从FirstClass 也是如此。

public class SecondClass extends AuthProvider {

public String getValueFromSecondClass() {
FirstClass firstClass = new FirstClass();
String firstClassString = firstClass.getValueFromFirstClass();
String s = AuthProvider.authKey;
return "SecondClass Auth: " + s + " -------- " + firstClassString;
}
public static void main(String[] args) {
SecondClass class2 = new SecondClass();
System.out.println(class2.getValueFromSecondClass());
}
}

所以我的要求是..我不需要每个子类有两个不同的“AuthToken”。我可以在 FirstClassSecondClass 中使用一个身份验证 token 。那么我的做法是对的吗?或者有更好的方法吗?

最佳答案

这将是我的方法,使用带有 static 初始化 block 的全局常量:

public class AuthProvider {
public static final String AUTH_KEY;

static {
AUTH_KEY = String.valueOf(new Random().nextInt(5000) + 1);
}
}

然后,在任何其他类中,您只需使用 AuthProvider.AUTH_KEY 即可检索该值。

关于java - 对于所有扩展类仅访问一次静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263808/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com