![](/img/trans.png)
[英]Random Selection of two different objects causes objects to reference same value
[英]Conditional selection from two different objects with same members
我想做的是用一些代碼更好地解釋:
在這里,我有兩個類(更確切地說是數據集中的DataTables,但我更願意將其描述為類符號):
class A {
public aType varA;
public bType varB;
public cType varC;
}
class B {
public aType varA;
public bType varB;
public cType varC;
public dType varD;
}
這些表由一個名為varSelect的變量定義:
A varnameA = (varSelect == 1) ? ABuilder() : null;
B varnameB = (varSelect == 2) ? BBuilder() : null;
在代碼中,我必須使用類似以下內容的代碼:
if((varSelect == 1 && varnameA.varA == true) ||
(varSelect == 2 && varnameB.varA == true)
{
...
}
如您所見,它執行相同的操作,但是它們具有一些不同的屬性,但是我將主要使用相同的類成員進行檢查。 我該如何設計這樣的東西?
注意:認為B是A類的較新版本。但是某些代碼將不得不繼續使用A作為其數據源。
封裝和繼承可以幫助解決此問題。
class Data {
// Common properties
public aType varA;
public bType varB;
public cType varC;
}
class A extends Data {
// other properties
}
class B extends Data {
public dType varD;
// other properties
}
class DataTable {
Data data;
public DataTable(int selector) {
if (selector == 1) {
// data will contain table A
} else if (selector == 2) {
// data will contain table B
}
}
public boolean isVarA() {
return data.varA;
}
}
因此,當我們需要檢查varA時,我們不再需要記住選擇了哪個數據表。
DataTable dataTable = new DataTable(1); // varSelect = 1
//...
//...
//...
if (dataTable.isVarA() == true) {
// do something
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.