2012-01-14 10 views
7

Quiero definir un tipo de conversión de un tipo arbitrario a un tipo de datos primitivo en Java. ¿Es posible definir un elenco de un tipo arbitrario a otro tipo arbitrario?Definición de un tipo de conversión en Java

public class Foo{ 
    //methods, constructor etc for this class 
    ... 
    //make it possible to cast an object of type Foo to an integer 
} 
//example of how an object of type foo would be cast to an integer 
public class Bar(){ 
    public static void main(String[] args){ 
     Foo foo1 = new Foo(); 
     int int1 = (int)foo1; 
     System.out.println(int1+""); 
    } 
} 
+0

Bastante seguro de que esto no es posible, pero tal vez alguien me puede corregir esto. – AHungerArtist

+0

¿No puede haber una estructura como molde, siempre que las clases tengan las mismas variables? –

+0

@LeeScott no, Java arrojaría una 'ClassCastException' – Dave

Respuesta

9

No se puede echarlo, pero puede proporcionar una función de conversión:

public class Foo{ 
    //methods, constructor etc for this class 
    ... 
    public int toInt(){ 
     //convert to an int. 
    }  
} 

bar se convierte en:

public class Bar(){ 
    public static void main(String[] args){ 
     Foo foo1 = new Foo(); 
     int int1 = foo1.toInt(); 
     System.out.println(int1+""); 
    } 
} 
1

clase Foo debe extenderse Número. ¿Por qué querrías hacer eso? ¿por qué no simplemente acceder a una variable int dentro de foo?

3

No es posible convertir directamente de un tipo de clase (por ejemplo, Foo) a un tipo primitivo. En su lugar, debe definir los métodos (por ejemplo, int asInteger()) que devuelven el valor de un objeto Foo como un número entero.

3

No, no lo es. Realmente no tendría sentido: ¿cómo podría convertirse un Foo en int?

definen más bien una secuencia de los métodos apropiados, tales como:

public int toInt() { return 42; } 

Encasillamiento entre tipos primitivos y tipos de Java, como entre int y Integer, ni siquiera era originalmente parte de Java.

Cuestiones relacionadas