我希望能夠在代碼中聲明一個Java類參考,這樣我可以,在其他地方,做這樣的事情:如何在Java中聲明一個常量分層數據結構?
switch (v)
{
case Ref.LicenseCode: ....;
case Ref.Widget.MaxWeight: ....;
case Ref.Widget.MolyBolt.ThreadsPerInch: ....;
}
參考旨在代表一個分層組常量常量數據結構值,例如經常出現在標準文件或其他參考資料中。我想要的值是真正不變的(所以它們可以在case語句中使用)。
我想我可以通過嵌套類定義來做到這一點,它的工作原理......至關重要。例如這樣的:
public final class Ref
{
public final static int LicenseCode = 800;
public final class Widget
{
public final static int MaxWeight = 5000;
}
}
讓我這樣寫:
switch (v)
{
case Ref.LicenseCode: ....;
case Ref.Widget.MaxWeight: ....;
}
但是當我嘗試拼圖下降到第三級:
public final class Ref
{
public final static int LicenseCode = 800;
public final class Widget
{
public final static int MaxWeight = 5000;
public final class MolyBolt
{
public final static int ThreadsPerInch = 12;
}
}
}
,有人告訴我:
"Ref.Widget.MolyBolt cannot be resolved or is not a field."
我做錯了什麼?還是我碰到了Java的一個邊緣?有其他方法可以實現我的目標嗎?我使用Eclipse Java Development Tools 3.5.2.r352在Windows Vista,JCK 1.6.0-21下運行。
MolyBolt不是一個領域。這是一堂課。你的意思是「Ref.Widget.MolyBolt.ThreadsPerInch」? – rfeak 2011-01-07 22:10:32
對不起,我們嘗試引用Ref.Widget.MolyBolt.ThreadsPerInch,並且得到的錯誤是「Ref.Widget.MolyBolt無法解析或不是字段」。 – 2011-01-07 22:18:20
這些古怪的常量,LicenceCodes和Weights等都是或多或少隨機的例子。我確實有一棵樹更有意義,但它是相當保密的。一個更真實的例子可能是關於太陽系的恆定值表,包括所有的行星和衛星。如果我可以寫: 案例Solar.Sun.Weight:....; case Solar.Mars.Deimos.Weight:....; 然後我可以做我需要的一切。 – 2011-01-07 22:21:23