簡體   English   中英

在setter和getter中獲取NULL-JAVA

[英]getting NULL in setter and getter - JAVA

當我運行我的程序時,我總是以這個錯誤“線程“ AWT-EventQueue-0”中的異常java.lang.NullPointerException”結束。 我有會員類,我在其中編寫我的setter和getter。 我需要在那里的所有實體。 現在我在“管理類”中有另一種方法

 public class Admin {
     private ArrayList<Member> members;
     private String AccessName;
     private String username;
     private String password;

     public Admin(){
        this.AccessName="Ms. April Santos";
        this.username = "estella";
        this.password = "teller";
        this.members = new ArrayList<Member>();
    }

    public ArrayList<Member> getMembers() {
        return members;
    }

    public void setMembers(ArrayList<Member> members) {
        this.members = members;
    }

    public String getPassword() {
        return password;
    }

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

    public String getAccessName() {
        return AccessName;
    }

    public void setAccessName(String AccessName) {
        this.AccessName=AccessName;;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Admin other = (Admin) obj;
        if ((this.username == null) ? (other.username != null) : !this.username.equals(other.username)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 97 * hash + (this.username != null ? this.username.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Admin{" + "members=" + members + ", AccessName;=" + AccessName + ", username=" + username + ", password=" + password + '}';
    }

       public Member searchMember(Member member){
        return this.searchMember(member.getMemberId());
    }

         public Member searchMember(String memberId){
          for(Member member : this.members){
            if(member.getMemberId().equals(memberId)){
                return member;
            }
          }
          return null;
    }

    public Member addMember(Member member){
        if (this.searchMember(member) == null){
            this.members.add(member);
            return member;
        }
        return null;
    }

    public Member addMember(String memberId, String firstName,String middleName, String lastName){
        if (this.searchMember(memberId) == null){
            Member member = new Member(memberId, firstName,middleName, lastName);
            this.members.add(member);
            return member;
        }
        return null;
    }

    public boolean validateLogin(String username, String password){
        boolean valid = false;
        valid = this.username.equals(username) && this.password.equals(password);
        return valid;
    }

   }

現在我在我的AddMemberView(GUI)中調用public addMember(String memberId,String firstName,String middleName,String lastName)。 我試圖獲取文本字段/組合框中的所有文本並進行設置,以便在我編寫DAO時將其臨時保存並准備保存在數據庫中。 這是我的AddMemberView btnSave操作外觀:

 import java.sql.SQLException;
 import java.text.*;
 import java.util.*;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.swing.JOptionPane;
 import rtu.tomis.bom.Admin;
 import rtu.tomis.bom.Member;
 import rtu.tomis.dao.MemberDao;

 public class AddMemberView extends javax.swing.JPanel {

 private MainFrameView mainFrameView;
 private Member member;
  private Admin admin;

  AddMemberView(Member memb, Admin admin){

    this.member= memb;
    this.admin= admin;

}

public AddMemberView() {
    initComponents();
}

  public AddMemberView(MainFrameView mf) {
    this.mainFrameView = mf;
    initComponents();
}

    public AddMemberView(Member m) {
    this.member = m;
    initComponents();
}

  private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {                                        
    String memberid = (this.txtMembersID.getText());
    String fname= (this.txtFirstName.getText());
    String mname=(this.txtMiddleName.getText());
    String lname=(this.txtLastName.getText());
    if(this.admin.addMember(memberid, fname,mname, lname) != null)//im having null here
    {
       try{
            member = this.admin.searchMember(memberid);// and if i remove that 1st line of null. the next null pointer is here
            String month = (String)cmbMonth.getSelectedItem();
            Integer day = (Integer) cmbDay.getSelectedItem();
            Integer year = (Integer)cmbYear.getSelectedItem();
            String bday = month + " " + day + ", " + year;
            DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US);
            Date dateBday = df.parse(bday);
            String Block = this.txtBlkLotNo.getText();
            String Street = (String)this.cmbStreet.getSelectedItem();
            String Brgy=(String)this.cmbBarangay.getSelectedItem();
            String City= (String)this.cmbCity.getSelectedItem();
            String Address = Block + " " + "" + Street + " ," +  Brgy + " ," + City;
            String Full = fname + " " + mname + " " + lname;
            int age= Integer.parseInt(this.txtAge.getText());
            int contact = Integer.parseInt(this.txtContact.getText());
            String region =(String) this.cmbRegion.getSelectedItem();

            this.member.setFirstName(fname);// then if i remove the two my next null line is here and those who have this.**member**.setblabla.
            this.member.setMiddleName(mname);
            this.member.setLastName(lname);
            this.member.setFullname(Full);
            this.member.setLotNo(Block);
            this.member.setBarangay(Brgy);
            this.member.setCity(City);
            this.member.setFulladdress(Address);
            this.member.setBirthday(dateBday);
            this.member.setAge(age);
            this.member.setEmailAddress(this.txtEadd.getText());
            this.member.setVotersId(this.txtVotersID.getText());
            this.member.setContactNo(contact);
            this.member.setRegion(region);
            this.member.setMemberId(memberid);
           if(this.rbtnFemale != null){
               this.member.setGender(this.rbtnFemale.getLabel());
           }
               else{
               this.member.setGender(this.rbtnFemale.getLabel());
           }

       }catch (ParseException ex) {
            System.out.println("Exception: "+ ex.getMessage());
        }
        JOptionPane.showMessageDialog(this, "Info saved!");
        JOptionPane.showMessageDialog(this,"Name" + this.member.getFirstName());

    }

}                  

謝謝你的幫助。

我認為您的“ admin”變量為null。 你叫你的構造函數嗎? 是,參數正確嗎?

只需編寫“ private admin admin”,不要將admin變量設為Admin Object。 嘗試初始化它或正確調用構造函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM