我有2个文本字段和登录按钮的登录页面。单击登录按钮时,将从txtfield中检索用户名和密码,并使用数据库中的用户名和密码进行检查。如果密码和用户名正确,则转到主页面。我是要获取用户名并在主页面中显示名称。但是,用数据库检查并从数据库中检索数据的所有代码都在buttonActionPerformed的私有类中。虽然我从数据库中检索用户名并存储在变量中,但我无法从其他类访问它,因为它是私有类。那么我该怎么做才能访问我在私有类中解析的变量。我试图在私有类之外去掉变量并在私有类中更新它,但是当我从其他类调用时仍然会变空。
答案 0 :(得分:1)
那么我该怎么做才能访问我在私有类中解析的变量。我试图在私有类之外去掉变量并在私有类中更新它,但是当我从其他类调用时仍然会变空。
Reflection API用于访问私有变量。如果你有一个名为Database的类,其中的私有字段是defPU,你可以访问它(并将其设置为null),如下所示:
Field defPUField = Database.class.getDeclaredField("defPU");
defPUField.setAccessible(true);
Field modsField = Field.class. .getDeclaredField("modifiers");
modsField.setAccessible(true);
modsField.setInt(defPUField, 10);
defPUField.set(null, testVal);
我建议您在幕后使用dp4j为您生成反射代码:
@com.dp4j.TestPrivates
void aMethod(){
Database.defPU = null;
}
答案 1 :(得分:1)
public class PrivateInformationRetreiving{
private int PrivateInfo;
public void setPrivateInfo(int PrivateInfo)
{
this.PrivateInfo=PrivateInfo;
}
public int getPrivateInfo(){return PrivateInfo;}
}
首先,变量PrivateInfo
被声明为private
,这意味着只有类PrivateInformationRetreiving
内的方法才会知道PrivateInfo
。
因此,当我们想要了解私有变量PrivateInfo
时,我们必须使用public
方法。
public
个元素不仅可以在课堂上访问,也可以在课堂外访问
因此,setPrivateInfo()
可以访问PrivateInfo
,因为它在课堂内
因此,我们必须使用mathods setPrivateInfo()
和getPrivateInfo()
作为接口来访问PrivateInfo
。
答案 2 :(得分:0)
成功登录后,只需将用户数据放入会话,然后重定向即可。当您需要当前登录的用户名时,您不必再向数据库创建另一个请求,因此它更快,更有效。
答案 3 :(得分:-1)
如果您将其声明为私有,则无法在类上下文之外访问它。
一个选项是公开getter / setter与你的变量进行交互。
public class MyClass {
private int x;
public int getX(){
return x;
}
public void setX(int value){
x = value;
}
}