2012-02-17 35 views
2

我有一個類型Time32在泛型中用作Work<Time32>所以我做了一個類Time32。 我也必須執行在Java中實現typedef

typedef UInt(5) Time32 

這裏UInt表示unsigned int。 Java沒有unsigned int,所以我創建了自己的類。

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

    public int getSize() 
    { 
     return size; 
    } 
} 

但我不明白我怎麼可以在Java中實現的typedef。請幫忙。謝謝。

我需要保持uint類,因爲我有將使用UINT像UInt(20) LoadUInt(10) Force

+0

重複的:http://stackoverflow.com/questions/1195206/is-there-a-java-equivalent-or-methodology-for-the-typedef-keyword-in -c – jalopaba 2012-02-17 11:24:21

+0

有人可以告訴我如何實現所需的時間,即time32作爲通用和typedef – 2012-02-17 11:58:43

+1

@user你可以告訴我們,這(5)'應該做什麼?該語法在我知道的任何語言中都是無效的。 – 2012-02-17 12:20:28

回答

5

由於Java中沒有typdefs,所以不能使用它們。最佳逼近可能是這樣的:

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

總之,你不能其他一些變量。 :(我的工作庫,這將允許你這樣做在Java中,但現在言之過早。)

我只是用int,並確保我知道它的簽名,並使用變通方法,或者我用long代替,只擔心它的重要性。

+0

你的意思是「確定我知道它簽署了」彼得? – Gray 2012-02-17 13:23:46

+0

我的意思是你可以使用'int'作爲任何32位值,有符號或無符號。 Java僅支持直接簽名,但可以使用變通辦法將其視爲未簽名。 – 2012-02-17 19:26:49

+0

哎。我不確定我會推薦。我們以前每天都用C來做這些事情,但用Java來做這件事似乎很少有必要。 – Gray 2012-02-17 19:59:17

0

在java中沒有typedefs(或別名)。 您可以直接使用原始類型換成另一個類型。

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