[英]Access the variable declared inside the private class in java
这是我的代码。
private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {
String username = "";
String sql = "select * from userinfo where uname=? and pword=?";
try{
pst = conn.prepareStatement(sql);
pst.setString(1, txt_username.getText());
pst.setString(2, txt_password.getText());
rs=pst.executeQuery();
if(rs.next()){
afterLogin pwcorrect = new afterLogin();
pwcorrect.setVisible(true);
this.setVisible(false);
username = txt_username.getText();
}
else{
JOptionPane.showMessageDialog(null, "Username and Password are Incorrect.");
}
}
catch(Exception e){
JOptionPane.showMessageDialog(null, e);
}
}
我需要从另一个类访问用户名的值。 有什么办法吗??? 请帮助我的代码。
这不仅在类中定义,而且在类的方法中定义。
这不是“私有”变量(或类),就其他类而言,这是一个不可见的变量。 用公共获取者公开它,或提供一种代码可以将其设置在其他内容上的机制。
由于这是一个动作处理程序,因此您还需要确保仅在设置变量后才可以访问该变量,或者确保该变量可以被访问而没有值。
public class WhateverClassThisIs {
private String username;
public String getUsername() { return username; }
private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "select * from userinfo where uname=? and pword=?";
try {
// As before, but:
if (rs.next()) {
username = txt_username.getText();
}
}
}
}
public class SomeOtherClass {
private WhateverClassThisIs theOtherClass;
public void setTheOtherClass(WhateverClassThisIs theOtherClass) {
this.theOtherClass = theOtherClass;
}
public void whatever() {
String username = theOtherClass.getUsername();
}
}
另一种机制将依赖于使用用户名设置器将内容传入WhateverClassThisIs
,大致是:
public class WhateverClassThisIs {
private SomeOtherClass someOtherClass;
public WhateverClassThisIs(SomeOtherClass someOtherClass) {
this.someOtherClass = someOtherClass;
}
private void btnloginActionPerformed(java.awt.event.ActionEvent evt) {
String sql = "select * from userinfo where uname=? and pword=?";
try {
// As before, but:
if (rs.next()) {
someOtherClass.setUsername(txt_username.getText());
}
}
}
}
public class SomeOtherClass {
private String username;
public void setUsername(String username) {
this.username = username;
}
public void whatever() {
// Do something with username--but either try
// after you know it's been set, or by being
// able to handle it being null/empty/whatever
}
}
另外,您可以使用Observer
,几种摆动机制中的任何一种,依此类推。
是的,如果变量是一个字段,则有多种方法可以使用反射...。
但是最好的解决方案是更改其他类,以便在考虑所有含义之后,可以使用可访问的getter和/或setter方法。
打破类封装以访问私有状态是您只能采取的最后措施。
如果变量是局部变量,则其他类或方法无法更新它。 而且,如果该类是本地声明的匿名内部类并且该变量被声明为final
则只能从另一个类访问它。 这听起来不像您想要在这里做的...。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.