2012-02-17 6 views
2

generics에서 Work<Time32>으로 사용되는 Time32 유형이 있으므로 Time32 클래스를 만들었습니다. 은 또한 다음Java에서 typedef 구현

typedef UInt(5) Time32 

UINT가 서명되지 않은 INT를 의미 구현해야한다. Java는 unsigned int를 가지고 있지 않으므로, 나는 내 자신의 클래스를 만들었습니다.

public class UInt 
{ 
    private final int size; 
    public UInt(int x) 
    { 
     this.size=x; 
    } 

    public int getSize() 
    { 
     return size; 
    } 
} 

하지만 어떻게 자바에서 typedef를 구현할 수 있는지 이해가 안됩니다. 도와주세요. 감사.

나는 내가, 당신은 할 수 없습니다 즉 UInt(20) Load 또는 UInt(10) Force

+0

중복 : http://stackoverflow.com/questions/1195206/is-there-a-java-equivalent-or-methodology-for-the-typedef-keyword-in -c – jalopaba

+0

누군가 제발 원하는 것을 얻을 수 있다고 말해 주시겠습니까? time32 일반 및 typedef로 –

+1

@user이'(5)'가 무엇을해야하는지 말씀해 주시겠습니까? 그 구문은 내가 아는 어떤 언어에서도 유효하지 않습니다. –

답변

5

Java에는 typdefs가 없으므로 사용할 수 없습니다. 가장 근사이 될 수 있습니다

public class Time32 extends UInt { 
    public Time32(){ 
     super(5); 
    } 
} 
0

처럼 UINT를 사용하는 다른 변수를 가지고 uint 클래스를 유지해야합니다. :(자바에서 작업 할 수있게 해주는 라이브러리를 사용하고 있습니다.) 아직 을 사용하고 있으며 그 부호가없고 사용 방법이 확실한지 확인하거나 long을 대신 사용합니다. 그것이 중요 할 때 그것에 대해 걱정하십시오.

+0

"피고인 인 줄 알았습니까?"피터? – Gray

+0

"int"를 부호있는 또는 부호없는 32 비트 값으로 사용할 수 있습니다. Java는 직접 서명 만 지원하지만 해결 방법을 사용하여 부호없는 것으로 처리 할 수 ​​있습니다. –

+0

아참. 나는 그것을 권하고 싶지 않다. 우리는 매일 C에서 이런 작업을 했었지만 Java로 수행하는 것은 거의 필요하지 않습니다. – Gray

0

java에는 typedef (또는 별칭)가 없습니다. 직접 기본 유형 또는 유형을 다른 것으로 사용할 수 있습니다.

public class Time32 { 
    private final UInt value; 
    public Time32(...) { 
    value = ...; 
    if (value.getSize() != 5) { 
     throw new IllegalArgumentException() 
    } 
    } 
    public UInt toUInt() { 
    return value; 
    } 
}