2012-01-14 5 views
7

자바에서 임의의 타입에서 원시 타입으로 타입 캐스트를 정의하고 싶습니다. 한 임의 유형에서 다른 임의 유형으로 형변환을 정의 할 수 있습니까?자바에서 타입 캐스트 정의하기

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

확실히 이것은 가능하지 않지만 아마도 누군가 나를 교정 할 수 있습니다. – AHungerArtist

+0

클래스에는 동일한 변수가있는 한 캐스트와 같은 구조체가 있어야할까요? –

+0

@LeeScott 아니요, Java는'ClassCastException'을 던집니다. – Dave

답변

9

당신이 캐스팅 할 수는 없지만이 변환 기능을 제공 할 수 있습니다

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

바는 다음이된다 :

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

클래스 푸 번호를 확장해야합니다. 왜 그렇게하고 싶습니까? 왜 foo 내부의 int 변수에 액세스하지 않는가?

3

클래스 유형 (예 : Foo)을 원시 유형으로 직접 변환 할 수 없습니다. 대신 Foo 객체의 값을 정수로 반환하는 메소드 (예 : int asInteger())를 정의해야합니다.

3

아니요, 그렇지 않습니다. 실제로 의미가 없습니다. Foo은 어떻게 int이 될 수 있습니까? 자바는이었다조차 원래 부품 등 intInteger과 같은 기본 유형 및 Java 유형 사이

public int toInt() { return 42; } 

타입 캐스팅 :

오히려 같은 적절한 방법의 순서를 정의한다.