Java:在一个类中初始化的调用方法在其他类中给出Nullpointerexception

Java:在一个类中初始化的调用方法在其他类中给出Nullpointerexception

问题描述:

我定义了一个Logininfo类来存储用户的电子邮件和密码。我从登录GUI获取电子邮件和密码。使用setMethods放入Logininfo类。我将编程连接到一个mysql服务器(这里mysql不是问题)。我需要emailadres和密码,以便稍后在其他GUI中使用它进行查询。Java:在一个类中初始化的调用方法在其他类中给出Nullpointerexception

这是LOGININFO类

public class Logininfo { 

public static Emailadres emailadres = new Emailadres(); 
public static Password password = new Password(); 

public static class Emailadres 
{ 
    private String emailadres; 

    public Emailadres() 
    { 
     emailadres = " "; 
    } 

    public void setEmailadres(String emailadres) 
    { 
     this.emailadres = emailadres; 
    } 

    public String getEmailadres() 
    { 
     return(emailadres); 
    } 

} 

public static class Password 
{ 

    private String password ; 

    public Password() 
    { 
     password = " "; 
    } 

    public void setPassword(String password) 
    { 
     this.password = password; 
    } 

    public String getPassword() 
    { 
     return(password); 
    } 

} 

} 

在登录界面我用的是使用setMethod存储的emailadress和密码。

public class Login extends javax.swing.JFrame { 

    Logininfo logininfo; 
    Logininfo.Emailadres emailadres = new Logininfo.Emailadres(); 
    Logininfo.Password password = new Logininfo.Password(); 

    private boolean validate_login(String email,String wachtwoord) { 

    emailadres.setEmailadres(email); 
    wachtwoord.setPassword(password); 

后来我尝试在另一个类中检索电子邮件地址和密码。

public class Account extends javax.swing.JFrame { 

Logininfo logininfo; 
Logininfo.EmailAdres emailadres; 
Logininfo.WachtWoord password; 

emailadres.getEmailadres(email); 
password.getPassword(password); 

我在这里得到一个Nullpointerexception。我知道你必须在登录GUI屏幕上创建一个新的Logininfo实例。但是,在Account类中,您无法创建另一个新实例。公共课不应该用于这个,我应该使用别的东西吗?

任何帮助,将不胜感激

+3

看来,你只是在学习Java。我*高度*建议在开始更大的冒险之前先阅读[教程](https://docs.oracle.com/javase/tutorial/java/javaOO/index.html)。例如,你是否知道所有对象都需要显式分配,与C++不同? –

+0

设置电子邮件和密码时,这些方法需要一个字符串类型(方法'setEmailadres(String)'和'setPassword(String)')。哪里定义了'email'和'password'? – Pleasant94

+0

他们在一个布尔值来验证来自mysql的登录。我忘了把布尔值放在那里。它现在在那里。 – Heijkoop

email_adresLogin类是类的一个实例字段,是完全无关的Account类的emailadres实例字段。这两个指针指向内存中的不同位置。

如果您希望Account的实例拥有来自Login实例的数据,您必须以某种方式将其提供给它。

+0

嘿,当我为这个问题写代码时,我改变了代码。 email_adres和pass_word应该是emailadres和密码。对不起, – Heijkoop

+0

没关系,它们仍然是不同对象(甚至不同类别)的字段。 –