我有带有 2 个文本字段和一个登录按钮的登录页面。单击登录按钮时,会从 txtfield 中检索用户名和密码,并检查数据库中的用户名和密码。如果密码和用户名正确,则进入主页。我要获取用户名并在主页中显示名称。但是所有检查数据库并从数据库中检索数据的代码都在 buttonActionPerformed 的私有类中。即使我从数据库中检索用户名并将其存储在变量中,我也无法从其他类访问它,因为它是私有类。那么我该怎么做才能访问我在私有类中清除的变量。我试图在私有类之外清除变量并在私有类中更新它,但是当我从其他类调用时我仍然空白。
问问题
143 次
4 回答
1
那么我该怎么做才能访问我在私有类中清除的变量。我试图在私有类之外清除变量并在私有类中更新它,但是当我从其他类调用时我仍然空白。
反射 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;
}
于 2013-02-13T15:27:31.180 回答
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
在类内访问。
因此,我们必须使用数学方法,setPrivateInfo()
并getPrivateInfo()
作为接口来访问PrivateInfo
.
于 2013-02-13T15:41:50.873 回答
0
成功登录后,只需将用户数据放入会话,然后重定向。当您需要当前登录的用户名时,您不必向数据库创建另一个请求,因此它更快更高效。
于 2013-02-13T15:15:19.017 回答
-1
如果您将其声明为私有,则不能在类上下文之外访问它。
一种选择是公开公共 getter/setter 以与您的变量进行交互。
public class MyClass {
private int x;
public int getX(){
return x;
}
public void setX(int value){
x = value;
}
}
于 2013-02-13T15:14:59.343 回答