¿Fallo de casting?

Iniciado por SKalextric, 15 Octubre 2008, 12:08 PM

0 Miembros y 1 Visitante están viendo este tema.

SKalextric

Hola gente, os comento un problemilla, acabo de llegar de la facultad y de estar dandole al eclipse, y al pasarme a mi portatil el proyecto con el que estaba trabajando, de repente me salen errores con los tipos.
Os pongo un ejemplo:
Código (java) [Seleccionar]
public class RacionalImpl implements Racional {
private Integer den;
private Integer num;


public RacionalImpl (Integer num1, Integer den1){
den=num1;
num=num1;
}
public RacionalImpl (){
den=1;  <---- Fallo
num=0; <----Fallo
}
public RacionalImpl (Integer num1){
num=num1;
den=1; <---- Fallo
}

//Consultores
public Integer getDenominador() {
return den;
}

public Integer getNumerador() {
return num;
}
   
public void setDenominador(Integer den) {
this.den=den;

}


public void setNumerador(Integer num) {
this.num=num;

Donde pone "<--- Fallo" eclipse me cuenta esta historia: "Type mismatch cannot convert from int to Integer". No se si será devido a la clase envoltura esta o si es del JDK, a ver si podeis ayudarme. Gracias.

Casidiablo

Pues no te debería haber funcionado en la facultad, o al menos eso creo. Ten en cuenta que si haces algo como:

den=1;

den es un objeto de tipo Integer, mientras que 1 es un dato primitivo tipo int. Tienes dos maneras de solucionarlo:

  • O declaras los datos como int (cambias Integer den; por int den;)
  • O en vez de hacer esto: den=1; haces esto: den=new Integer(1);

Un saludo!

SKalextric

#2
Acabo de ponerme en windows y no da error de ningún tipo y funciona correcto, estoy pensando que pueda ser del JDK de linux.
Según me ha comentado el profesor cuando introduces Integer automáticamente crea el objeto según me has dicho "den=new Integer(1);", de ahi que no use el tipo primitivo.
Pero ya te digo funcionar, funciona, porque hemos estao trapicheando asi en clase hoy.

juancho77

Si, depende de la version del compilador de Java, no si estas en Windows o Linux o Solaris. El tema del casting es de constante discusion y sufre modificaciones entre versiones.
Saludos

SKalextric

#4
Hombre ya lo que queda es el compilador, pero es que tengo la misma version en ambos casos. Total mientras alguno me vaya voy servido. Gracias a todos.


Modifico y dejo de dar por culo: Lo he arreglao me faltaba un paquete  :-[ . Gracias a los dos :P

sapito169

cunado creas una variable integer
Integer a;
esa variable integer deve recivir un intger no un int

en las ultimas versiones d java la 6 una clase puede ser igualda a un tipo primitivo sin ningun proble te lo castea automatico