Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Defining a type cast in Java

I want to define a type cast from an arbitrary type to a primitive data type in Java. Is it possible to define a cast from one arbitrary type to another arbitrary type?

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+"");
    }
}
like image 925
Anderson Green Avatar asked Jan 14 '12 05:01

Anderson Green


2 Answers

You can't cast it, but you can provide a conversion function:

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

Bar then becomes:

public class Bar(){
    public static void main(String[] args){
        Foo foo1 = new Foo();
        int int1 = foo1.toInt();
        System.out.println(int1+"");
    }
}
like image 147
Dave Avatar answered Oct 17 '22 21:10

Dave


It is not possible to convert from a class type (eg. Foo) to a primitive type directly. Instead you should define methods (eg. int asInteger()) that return the value of a Foo object as an integer.

like image 31
o_o Avatar answered Oct 17 '22 22:10

o_o