PDA

Visualizza la versione completa : [JAVA] tipi incompatibili


Sandrocchio_0.1
30-12-2004, 22:16
Salve a tutti.
Sono newbie in Java, ed ho un problema nel creare un oggetto che mi servirà per i dati raccolti dal DB.
Il compilatore mi segna questi due errori, ma non capisco il perchè, ma soprattutto come risolverli, dato che li ho inizializzati correttamente(credo...)
Molto probabilmente si tratta di una banalità che con la poca esperienza che ho non riesco ad individuare.
grazie a tutti.


AvailModel.java:16: incompatible types
found : int
required: java.lang.Integer
total_rooms = rs.getInt("single");
^
AvailModel.java:17: incompatible types
found : float
required: java.lang.Float
price_room = rs.getFloat("double");
^
2 errors

il file .java invece l'ho scritto così:


import java.sql.*;

public class AvailModel {
private Date date;
private Integer total_rooms;
private Float price_room;


//costructor
public AvailModel(ResultSet rs) throws SQLException {


date = rs.getDate("date");
total_rooms = rs.getInt("single");
price_room = rs.getFloat("double");
}

public void setDate(Date date) {
this.date = date;
}

public void setTotal_rooms(Integer total) {
this.total_rooms = total;
}

public void setPrice_room(Float price) {
this.price_room = price;
}


public Date getDate() {
return date;
}

public Integer getTotal_rooms() {
return total_rooms;
}

public Float getPrice_room() {
return price_room;
}

}

unomichisiada
30-12-2004, 22:55
Il problema sta nel fatto che in java sono supportati si ai tipi primitivi (int,float,double...) sia delle classi wrapper (contenitori) che li rappresentato.
nell'istruzione

total_rooms = rs.getInt("single");
Tu stai cercando di assegnare ad una variabile di tipo Integer un valore di ritorno di tipo int e ovviamente il compilatore :nonono: non è d'accordo.La cosa si risolve semplicemente creando un Integer dal valore di ritorno di getInt(),uno dei costruttori di Integer prevede ovviamente un int come paramentro.
Una cosa tipo

total_rooms = new Integer(rs.getInt("single"));
Il discorso per il float è ovviamente del tutto analogo

Sandrocchio_0.1
30-12-2004, 23:10
grazie mille.
Però cambia quell'avatar, è abbominevole!

Sandrocchio_0.1
31-12-2004, 11:02
vediamo se ho capito bene...
Allora i valori primitivi sono contenuti in queste classi dette wrapper (per gli Int è Integer) che li permettono di implementare metodi tipo il casting??

unomichisiada
31-12-2004, 13:34
Originariamente inviato da Sandrocchio_0.1
vediamo se ho capito bene...
Allora i valori primitivi sono contenuti in queste classi dette wrapper (per gli Int è Integer) che li permettono di implementare metodi tipo il casting?? Il casting non è un metodo!
No io la metterei così:queste classi contenitore per i tipi primitivi si rendono necessarie per una questione di object orientation del linguaggio (di fatto in un linguaggio strettamente ad oggetti i tipi primitivi non dovrebbero nemmeno esistere perchè non sono oggetti e in un tale linguaggio qualsiasi entità o è un oggetto o è un metodo di un'oggetto),inoltre servono per rendere possibile l'uso di classi come Vector che possono contenere collezioni di oggetti di qualunque tipo purchè derivanti da Object (e i tipi primitivi non derivano da object).Tolte queste cose Integer,Float etc..non sarebbero necessarie

Sandrocchio_0.1
01-01-2005, 18:36
ok, I got it!
Grazie mille e buon anno :ciauz:

Loading