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 Réponses :
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+""); } }
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. P>
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 () code>) qui renvoient la valeur d'un objet FOO en tant qu'oeur entier. P>
Non, ce n'est pas. Il ne serait pas vraiment de sens: comment un définit plutôt une séquence de méthodes appropriées, telles que: P> foo code> devenir un
int code>?
public int toInt() { return 42; }
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 code>
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 code> .. pourquoi ???