Foro de elhacker.net

Programación => Java => Mensaje iniciado por: SKalextric en 15 Octubre 2008, 12:08 pm



Título: ¿Fallo de casting?
Publicado por: SKalextric en 15 Octubre 2008, 12:08 pm
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
  1. public class RacionalImpl implements Racional {
  2. private Integer den;
  3. private Integer num;
  4.  
  5.  
  6. public RacionalImpl (Integer num1, Integer den1){
  7. den=num1;
  8. num=num1;
  9. }
  10. public RacionalImpl (){
  11. den=1;  <---- Fallo
  12. num=0; <----Fallo
  13. }
  14. public RacionalImpl (Integer num1){
  15. num=num1;
  16. den=1; <---- Fallo
  17. }
  18.  
  19. //Consultores
  20. public Integer getDenominador() {
  21. return den;
  22. }
  23.  
  24. public Integer getNumerador() {
  25. return num;
  26. }
  27.  
  28. public void setDenominador(Integer den) {
  29. this.den=den;
  30.  
  31. }
  32.  
  33.  
  34. public void setNumerador(Integer num) {
  35. this.num=num;
  36.  
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.


Título: Re: ¿Fallo de casting?
Publicado por: Casidiablo en 15 Octubre 2008, 16:14 pm
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!


Título: Re: ¿Fallo de casting?
Publicado por: SKalextric en 15 Octubre 2008, 16:59 pm
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.


Título: Re: ¿Fallo de casting?
Publicado por: juancho77 en 15 Octubre 2008, 19:12 pm
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


Título: Re: ¿Fallo de casting?
Publicado por: SKalextric en 15 Octubre 2008, 19:21 pm
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


Título: Re: ¿Fallo de casting?
Publicado por: sapito169 en 16 Octubre 2008, 06:22 am
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