使用 setter 和 getter JAVA 从另一个 类 访问变量
Accessing variables from another classes with setter and getter JAVA
这是我的项目的一个非常简单的示例,它的规模要大得多。
任务:
密码将在setpassword方法中设置。
getpassword 方法将 return 密码。
在 sendmail class 调用密码,以便通过电子邮件发送给用户以使用新凭据登录。
但是当我 运行 整个代码一切正常,除了 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();
}
}
这是我的项目的一个非常简单的示例,它的规模要大得多。
任务:
密码将在setpassword方法中设置。
getpassword 方法将 return 密码。
在 sendmail class 调用密码,以便通过电子邮件发送给用户以使用新凭据登录。
但是当我 运行 整个代码一切正常,除了 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();
}
}