如何从java中的其他类访问私有类内部声明的变量?

时间:2013-02-13 15:06:33

标签: java class private

我有2个文本字段和登录按钮的登录页面。单击登录按钮时,将从txtfield中检索用户名和密码,并使用数据库中的用户名和密码进行检查。如果密码和用户名正确,则转到主页面。我是要获取用户名并在主页面中显示名称。但是,用数据库检查并从数据库中检索数据的所有代码都在buttonActionPerformed的私有类中。虽然我从数据库中检索用户名并存储在变量中,但我无法从其他类访问它,因为它是私有类。那么我该怎么做才能访问我在私有类中解析的变量。我试图在私有类之外去掉变量并在私有类中更新它,但是当我从其他类调用时仍然会变空。

4 个答案:

答案 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;
    }
}