在Java中定义类型转换

时间:2012-01-14 05:24:01

标签: java types casting

我想在Java中定义从任意类型到基本数据类型的类型转换。是否可以定义从一个任意类型到另一个任意类型的转换?

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 个答案:

答案 0 :(得分:9)

你无法施放,但你可以提供转换功能:

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

Bar然后变成:

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

答案 1 :(得分:3)

不可能直接从类类型(例如Foo)转换为基本类型。相反,您应该定义将Foo对象的值作为整数返回的方法(例如int asInteger())。

答案 2 :(得分:3)

不,不是。它真的没有意义:Foo怎么能成为int

而是定义一系列适当的方法,例如:

public int toInt() { return 42; }

原始类型和Java类型之间的类型转换(例如intInteger之间)甚至不是Java的一部分。

答案 3 :(得分:1)

类Foo必须扩展Number。你为什么要这样做呢?为什么不只是在foo中访问一个int变量。