7
votes

Définir un type de coulé en Java

Je veux définir un type de type d'un type arbitraire à un type de données primitif en Java. Est-il possible de définir une coulée 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+"");
    }
}


4 commentaires

Assez sûr que cela n'est pas possible, mais peut-être que quelqu'un peut me corriger à ce sujet.


Vous ne pouvez pas y avoir une structure comme la fonte, tant que les classes ont les mêmes variables?


@Leescott non, Java lancerait un ClasscastException


En fait, que voulez-vous réaliser avec cette coulée ..... Vous voulez jeter une référence d'une classe avec ses propres méthodes et champs à un int .. pourquoi ???


4 Réponses :


9
votes

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

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


0 commentaires

1
votes

La classe FOO doit prolonger le numéro. Pourquoi voudriez-vous faire cela cependant? Pourquoi pas seulement accéder à une variable Int à l'intérieur de FOO.


0 commentaires

3
votes

Il n'est pas possible de convertir 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 renvoient la valeur d'un objet FOO en tant qu'oeur entier.


0 commentaires

3
votes

Non, ce n'est pas. Il ne serait pas vraiment de sens: comment un foo code> devenir un int code>?

définit plutôt une séquence de méthodes appropriées, telles que: P>

public int toInt() { return 42; }


0 commentaires