Salve ho una classe cliente, vorrei capire come mai , quando vado a inviare una sua istanza su un socket tramite un ObjectOutputStream, il server che riceve tale istanza , quando va a leggere il campo integer id_cliente, si verifica una NullPointerException.
codice:package jCallRemember.libreria; import java.io.Serializable; import java.sql.Date; import java.sql.Time; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.regex.Pattern; /** * * Questa classe implementa un oggetto che * rappresenta un cliente. E definisce le caratteristiche di alcuni suoi campi * mediante l'utilizzo di espressioni regolari. */ public final class ClienteDB implements Serializable { private String statoAppuntamento; private Integer id_cliente; private String nome; private String cognome; private String telefono; private String mail; private java.util.Date primo_contatto; private java.sql.Date dataAppuntamento; private java.sql.Time oraAppuntamento; transient private static final String regexNome = "\\D{0,20}"; transient private static final String regexCognome = "[a-zA-Z]{0,20}"; transient private static final String regexMail = "(([a-zA-Z0-9._%-]{1,64})@([a-zA-Z0-9.-]{2,186})" + "\\.([a-zA-Z]{2,4}))?"; transient private static final String regexTelefono = "([0-9]{5,12}){1}"; public ClienteDB() { } /** * Costruttore con parametri * * @param nome * @param cognome * @param mail * @param tel */ public ClienteDB(String nome, String cognome, String mail, String tel) { this.setNome(nome); this.setCognome(cognome); this.setMail(mail); this.setTelefono(telefono); } /** * * @return il valore del campo nome */ public String getNome() { return nome; } /** * Imposta il campo nome dell'oggetto cliente * * @param nome */ public void setNome(String nome) throws IllegalArgumentException { boolean error = !Pattern.matches(regexNome, nome); if (error) { throw new IllegalArgumentException("Formato del campo Nome" + " non valido"); } this.nome = nome; } public String getCognome() { return cognome; } /** * Imposta il valore del campo cognome dell'oggetto cliente * * @param cognome */ public void setCognome(String cognome) throws IllegalArgumentException { boolean error = !Pattern.matches(regexCognome, cognome); if (error) { throw new IllegalArgumentException("Formato del campo Cognome" + " non valido"); } this.cognome = cognome; } /** * * @return il numero di telefono del cliente */ public String getTelefono() { return telefono; } /** * Imposta il valore del campo telefono, dell'oggetto cliente * * @param telefono */ public void setTelefono(String telefono) throws IllegalArgumentException { boolean error = !Pattern.matches(regexTelefono, telefono); if (error) { throw new IllegalArgumentException("Formato del campo Telefono" + " non valido"); } this.telefono = telefono; } public String getMail() { return mail; } /** * Imposta il valore del campo mail dell'oggetto cliente * * @param mail */ public void setMail(String mail) throws IllegalArgumentException { boolean error = !Pattern.matches(regexMail, mail); if (error) { throw new IllegalArgumentException("Formato del campo Mail" + " non valido"); } this.mail = mail; } /** * * @return la data dell'appuntamento del cliente */ public Date getDataAppuntamento() { return dataAppuntamento; } /** * Imposta la data dell'Appuntamento del cliente, prendendo in input una * data dal formato dd/MMM/yyyy * * @param dataAppuntamento * @throws java.text.ParseException */ public void setDataAppuntamento(String dataAppuntamento) throws NullPointerException, ParseException { if (dataAppuntamento == null) { throw new NullPointerException("Impostare Campo Data Appuntamento+" + "\nValore Nullo non valido!"); } SimpleDateFormat dataformat = new SimpleDateFormat("dd/MMM/yyyy"); java.util.Date data = dataformat.parse(dataAppuntamento); this.dataAppuntamento = new java.sql.Date(data.getTime()); } public void setDataAppuntamento(java.sql.Date data) throws NullPointerException { if (data != null) { this.dataAppuntamento = data; } else { throw new NullPointerException(); } } /** * * @return l'ora dell'appuntamento del cliente */ public Time getOraAppuntamento() { return oraAppuntamento; } /** * Imposta l'ora dell'appuntamento * * @param oraAppuntamento * @throws java.text.ParseException * */ public void setOraAppuntamento(String oraAppuntamento) throws NullPointerException, ParseException { if (oraAppuntamento == null) { throw new NullPointerException("Impostare ora appuntamento,valore" + " Nullo non valido!"); } oraAppuntamento=oraAppuntamento.concat(":00"); SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ss"); java.util.Date ora = sdf.parse(oraAppuntamento); this.oraAppuntamento = new java.sql.Time(ora.getTime()); } public void setPrimo_contatto(java.util.Date primo_contatto) { this.primo_contatto = primo_contatto; } public void setOraAppuntamento(Time oraAppuntamento) { this.oraAppuntamento = oraAppuntamento; } public java.util.Date getPrimo_contatto() { return primo_contatto; } public Integer getId_cliente() { return id_cliente; } public void setId_cliente(Integer id_cliente) { this.id_cliente = id_cliente; } /** * Ritorna lo stato dell'appuntamento * @return */ public String getStatoAppuntamento() { return statoAppuntamento; } /** * * @param statoAppuntamento */ public void setStatoAppuntamento(String statoAppuntamento) throws IllegalArgumentException { if(!statoAppuntamento.equals("PR") && !statoAppuntamento.equals("OK") && !statoAppuntamento.equals("KO")){ throw new IllegalArgumentException("Stato Appuntamento non valido"); } this.statoAppuntamento = statoAppuntamento; } @Override public String toString(){ return//this.getId_cliente().toString()+"\n"+ this.getNome()+"\n"+ this.getCognome()+"\n"+ this.getMail()+"\n"+ this.getTelefono()+"\n"+ this.getPrimo_contatto().toString()+"\n"+ this.getDataAppuntamento().toString()+"\n"+ this.getOraAppuntamento().toString()+"\n"+ this.getStatoAppuntamento()+"\n"; } }

Rispondi quotando

