2012-02-17 3 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(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

誰かがどのように私が望むie time32をジェネリックとtypedefとして達成できるか教えてください。 –

+1

@userこの '(5)'は何をすべきか教えてください。その文法は私が知っている言語では無効です。 –

答えて

5

Javaではtypdefsが存在しないため、これらは使用できません。最良の近似は、このようになります。

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

ようUINTを使用するいくつかの他の変数を持っているようUINTクラスを維持する必要があります。私はちょうどintを使用しています。私はその符号なしで回避策を知っていることを確認してください。あるいは、longを代わりに使用します。(私はあなたがJavaでそれをやり遂げることを可能にするライブラリを働いています。それが大事なときは心配してください。

+0

「ピーターが署名したことを知っていると確信していますか? – Gray

+0

私はあなたが任意の32ビット値、符号付きまたは符号なしとして 'int'を使用できることを意味します。 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; 
    } 
} 
関連する問題