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+"");
}
}
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+"");
}
}
, 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.
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.
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.