2009-02-23 63 views
1

我有一個封裝類封裝了一個需要作爲字節數組傳輸的信息。常量與保護靜態只讀

通過這種方式,該類將必要的頭部(如DATA_LENGTH或MESSAGE_TYPE等字段)封裝到相應的字節位置。爲此,我想定義常量中的位置和長度,例如:

HEADER_DATA_LENGTH_IX = 0; 
HEADER_DATA_LENGTH_LENGTH = 2; 

這意味着DATA_LENGTH從0開始並佔用兩個字節。

但到目前爲止,我正在努力使它們成爲常量或靜態只讀字段。 Const不能被保護,因此如果使用它們,我將無法派生一個新類並更改這些常量,另一方面,我可能會在派生類中聲明新的常量並使用它們。

您的方法是什麼?

+0

這是什麼技術? 。淨? Java的? – 2009-02-23 14:46:52

+0

當我第一次發佈答案時,標籤不是它的,對不起 – 2009-02-23 23:51:22

回答

4

如果你想改變在派生類中,這些則params的值,你可以讓他們readonly並改變它們在派生類的構造函數

我不會讓他們無論如何const,因爲他們」不...

1
protected static final 

in java!

0

我不會讓這些常量,因爲它們不是常量。當聲明爲const的時候,你應該問自己:這個改變可以嗎?你的信息長度可能會在一天內改變,所以他們最好是隻讀的。

+0

他們不能改變,他們可能會改變,但是這個想法是派生一個新的類來處理這些改變,因此,對於班級生活來說, ,將是不變的,只是爲了避免「幻數」 – 2009-02-23 14:48:53

0

創建具有常量的內部類。派生類可以稍後重寫內部類,並根據需要更改常量。

例如基類:

public class Stuff 
{ 
    public class HeaderInformation 
    { 
    public const int HEADER_DATA_LENGTH_IX = 0; 
    public const int HEADER_DATA_LENGTH_LENGTH = 2; 
    } 
} 

然後派生類可以這樣做:

public class DerivedStuff : Stuff 
{ 
    public new class HeaderInformation : Stuff.HeaderInformation 
    { 
    public new const int HEADER_DATA_LENGTH_IX = 10; 
    } 
} 

這樣一來,你有靈活性。在DerivedStuff中,HeaderInformation類具有基類Stuff.HeaderInformation類中的所有常量,但可以更改它們中的任何一個,或保留它所具有的常量。