Définition d'un type cast en Java


Je veux définir un type cast d'un type arbitraire à un type de données primitif en Java. Est-il possible de définir un cast d'un type arbitraire à un autre type arbitraire?

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+"");
    }
}
Author: Anderson Green, 2012-01-14

4 answers

Vous ne pouvez pas le lancer, mais vous pouvez fournir une fonction de conversion:

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

La barre devient alors:

public class Bar(){
    public static void main(String[] args){
        Foo foo1 = new Foo();
        int int1 = foo1.toInt();
        System.out.println(int1+"");
    }
}
 9
Author: Dave, 2012-01-14 05:28:21

, Il n'est pas possible de convertir à partir d'un type de classe (par exemple. Foo) à un type primitif directement. Au lieu de cela, vous devez définir des méthodes (par exemple. int asInteger()) qui renvoie la valeur d'un objet Foo sous forme d'entier.

 3
Author: o_o, 2012-01-14 05:28:36

Non, ce n'est pas le cas. Cela n'aurait pas vraiment de sens: comment un Foo pourrait-il devenir un int?

Définissez plutôt une séquence de méthodes appropriées, telles que:

public int toInt() { return 42; }

Typecasting entre les types primitifs et les types Java, comme entre int et Integer, ne faisait même pas partie à l'origine de Java.

 3
Author: craigmj, 2012-01-14 05:29:22

La classe Foo doit étendre le nombre. Pourquoi voudriez-vous faire si? pourquoi ne pas simplement accéder à une variable int à l'intérieur de foo.

 1
Author: L7ColWinters, 2012-01-14 05:28:25