這有點難以解釋,所以我寫了一個例子來說明這個概念。在下面的例子中,我有一個庫存類,它模擬影響庫存模擬程序的數字。我還有一個MarketModifier類,它表示會以不同方式影響股票的事件。Java:將對象鏈接到另一個對象中的變量
public class ExampleArea
{
public static void main(String cvhfg[])
{
Stock test = new Stock(1f,1f,1f,1f);
MarketModifier worldEvent =
new MarketModifier("Bad publicity",-2.5f,"publicOpinion");
}
}
class MarketModifier
{
public MarketModifier(String name, float modifier, String variable) {
super();
this.name = name;
Modifier = modifier;
this.variable = variable;
}
String name;
float Modifier;
String variable;
}
class Stock
{
public Stock(float value, float integrity, float publicPresence, float publicOpinion) {
super();
this.value = value;
this.integrity = integrity;
this.publicPresence = publicPresence;
this.publicOpinion = publicOpinion;
}
float value;
float integrity;
float publicPresence;
float publicOpinion;
//...other variables...
}
我的問題是如何將我的marketModifer鏈接到該變量的股票模型(以上是「publicOpinion」中的「變量」字符串設定的例子),而不使用字符串。字符串有可能使它們濛濛的問題,我需要一個開關來識別修飾符影響哪個變量。
我想使用一個枚舉,但我仍然需要一個切換表來檢查它們,我也必須更新枚舉值每次股票有一個不同的變量,可能會受到影響(可能有額外的變量Stock的子類)。我想到的另一種選擇是反思,但這種解決方案雖然我認爲可行,但似乎過於複雜,並且增加了閱讀難度,而不是解決問題。
那麼,有沒有更好的方法將一個對象鏈接到它在另一個對象中影響的變量(可能是某種觀察者/觀察者模式?)。
所以你想'變量'屬性是股票上修改後的財產的名稱? –
我希望它在編譯時確認庫存中有該變量(該字符串不是編譯時間檢查)。在C++或C#中,我可以通過某種指向它影響的變量的指針來完成此操作。但是Java沒有指針,我怎麼會比上面的字符串實現更好? –
我不明白你爲什麼不想使用枚舉。 –