使用 setter 和 getter JAVA 从另一个 类 访问变量

Accessing variables from another classes with setter and getter JAVA

这是我的项目的一个非常简单的示例,它的规模要大得多。

任务:

但是当我 运行 整个代码一切正常,除了 sendmail class 不会从用户 class.

的 getpassword 方法访问密码

我放了一个我的代码的简单版本:

用户 class >>>>>

public class  users {


private String password;


public users (){}

// GETTING PASSWORD
public String getpassword(){

    return password;
}


// SETTING PASSWORD
 public void setapassword(String password){
     this.password=password;
 }




}

报名class>>>>>>

public class signup {

public void signsup(){

    users  user1 =new users();
    user1.setapassword("player"); 

    sendmail mail1 =new sendmail();
    mail1.Sendsmail();

}
}

发送邮件class>>>>

public class sendmail   {

public void  Sendsmail(){

    users user1 =new users(); // object

    user1.getpassword(); //getting password 

 System.out.println(user1.getpassword()); // If print here I get null
 }
 }

主注册 Class>>>>

public class SignupMain {

public static void main(String[] args) {

     signup signup1= new signup();
     signup1.signsup();
   }

 }

您的注册 class 和您的发送邮件 class 中的 user1 对象不同。当然,它们的变量以相同的方式命名,但它们 引用 不同的对象。要从用户访问密码,您必须将用户传递给 sendmail class 例如:

Signup.java

public class signup
{

  public void settingPassowrd()
  {
    users user1 = new users();
    user1.setapassword( "player" );

    sendmail mail1 = new sendmail();
    mail1.Sendsmail(user1);

  }
}

与:

public class sendmail
{

  public void Sendsmail(user usr)
  {

    usr.getpassword(); // getting password

    System.out.println( usr.getpassword() ); // will be the proper value from now on.
  }
}

问题是在您的 sendmail class 中您创建了一个新用户 users user1 =new users(); --> 因此您无法访问您之前创建的用户,但您创建了一个显然可以访问的新用户没有密码。

相反,将您的用户传递给注册中的 sendmail 函数 class:

public void settingPassowrd(){

    users  user1 =new users();
    user1.setapassword("player"); 

    sendmail mail1 =new sendmail();
    mail1.Sendsmail(user1);

}

并在 class 中发送邮件:

public void  Sendsmail(users user) {
    System.out.println(user.getpassword());
}

顺便说一下,我建议您阅读 Java 的一些编码指南。例如:

  • Class 名称应始终以大写字母开头
  • Class 名称通常是单数 (class users --> class User)
  • 方法名称始终以小写字母开头并使用驼峰式命名法 (getpassword() --> getPassword())

请遵循标准编码约定。我用标准编码约定更改了您的代码。复制粘贴就行了

用户class

public class  Users {
private String password;
public users (){}
// GETTING PASSWORD
public String getpassword(){

    return password;
}
// SETTING PASSWORD
 public void setapassword(String password){
     this.password=password;
 }
}

报名class

public class Signup {

public void settingPassowrd(){

    Users  user1 =new Users();
    user1.setapassword("player"); 

    SendMail mail1 =new SendMail(user1);
    mail1.Sendsmail();

}
}

发送邮件class

public class SendMail   {
    private Users user1;
    SendMail(Users user1){
        this.user1 = user1
    }
    public void  sendMail(){
    user1.getpassword(); //getting password 
    System.out.println(user1.getpassword()); // If print here I get null
}
}

主要class测试代码

 public class SignupMain {

public static void main(String[] args) {

 Signup signup1= new Signup();
 signup1.settingPassowrd();
}

}