【问题标题】:Set and get method not working设置和获取方法不起作用
【发布时间】:2015-03-06 08:07:28
【问题描述】:

我有一个public static void 方法,它从某个来源读取信息。然后我使用这些设置方法来保存这些信息。 get/set 方法在一些单独的public 类中声明。 get 方法在我还定义了 set 方法的类中工作正常,但在任何其他类/方法中都不起作用。我得到的只是值null。我不知道为什么...有人可以帮帮我吗?

public static void InformationFinder() {
        String identificationID = null;     
        String flag = null;     
        String nickname = null;

        // part to read the informations (saved in the variables above)

       UserInfo user = new UserInfo();

       user.setIdentificationID(identificationID);
       user.setVorname(flag);   
       user.setNachname(nickname);

       // shows me up the correct ID    
       System.out.println("Tell me the ID: " + user.getIdentificationID());
}



public class UserInfo {

    public String identificationID;
    public String flag;
    public String nickname;

    public UserInfo () {

    public String getIdentificationID() {
        return Nachname;        
    }

    public String getFlag() {
        return flag;
    }

    public String getNickname() {
        return nickname;
    }


    // set Methoden 

    public void setIdentificationID(String identID) {
        this.identificationID = identID;        
    }

    public void setFlag(String flag) {
        this.flag= flag;        
    }

    public void setNickname (String nickname) {
        this.nickname = nickname;       
    }
}




 public static void main(String[] args) {

        UserInfo user = new UserInfo();          

        // shows me only null as result
        System.out.println(UserInfo.getIdentificationID());
 }

我知道问题可能是由于对象的第二次实例化。但是我发现没有其他方法可以在 'main()' 函数中使用 get 方法。

【问题讨论】:

  • 你试过调试你的代码吗?
  • 设置断点并单步执行您的代码。考虑将 UserInfo 类中的字段设为私有,因为无论如何您都在公开 getter/setter。
  • 你得到 null 因为值真的是 null ! .
  • 您没有为用户对象设置任何值。我在下面的帖子中添加了一个解决方案。试试这个,让我知道。
  • 可能想在 main 中调用 InformationFinder() 但不确定为什么 SO 代码模板将其视为类名。

标签: java get set


【解决方案1】:

我认为问题出在代码的以下部分(在您的 main() 方法中) -

 UserInfo user = new UserInfo();          

 // shows me only null as result
 System.out.println(UserInfo.getIdentificationID()); 

在 main 方法的上述代码中,您正在创建一个新的 UserInfo() 。但是set方法不适用于这里创建的user。此方法适用于其他对象。对同一个对象使用 set 方法。

您在public static void InformationFinder() 函数中创建的UserInfo 对象与在main() 方法中创建的UserInfo 对象不同。当您在 InformationFinder() 方法中设置一些 user 属性时,例如 -

user.setIdentificationID(identificationID);
user.setVorname(flag);   
user.setNachname(nickname); 

在 main() 方法中,您还必须添加这些 setter 方法 -

user.setIdentificationID(identificationID);
user.setVorname(flag);   
user.setNachname(nickname);

希望它会有所帮助。
非常感谢。

【讨论】:

  • 感谢您的解决方案,但我在 main() 方法中没有标识 ID、标志和昵称的信息。
  • 很多答案都可以解决问题,例如在 main 中调用 InformationFinder 函数,但是嘿,那么 OP 不会学习
  • 所以你必须从某个地方提供它或使用虚拟信息。否则,没有办法摆脱空值。因为main()方法中的用户与informatinFinder()方法中的用户完全不同。
  • 好的,因为 main() 函数可以工作,但是当我想要另一个类中的另一个方法来将信息写入数据库时​​怎么办。那里我绝对无法访问标识 ID、标志和昵称。我希望你知道我的意思。
  • @Panther 然后在 main 中使用它(您发布的代码似乎没有任何扫描仪,只有空值)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2016-01-03
  • 1970-01-01
  • 2018-03-30
相关资源
最近更新 更多