[英]Java Object with subclasses of different type including enum
我喜歡考慮自上而下而不是自下而上,所以這直接是我的最終目標:
我的目標:使用不同的“PlQryElement”構建的“aQuery”(Pl 代表“播放列表”,因為這里的上下文是音樂播放列表管理器的“智能播放列表”):
List<PlQry_Element> aQuery = new ArrayList<PlQry_Element>();
我顯然應該實例化“PlQry_Elements”,然后使用aQuery.add(...);
. 建立我的最終查詢的結果。
這是可能的“PlQry_Element”:
我會怎么想:
問題:我怎樣才能實現我的第一個目標......而不將我的“枚舉”對象更改為“類”?
任何幫助將不勝感激;..提前謝謝你.-)...
以下是沒有“實現”的類:
PlQryEl_Parenthese -->
package application.query.element;
public enum PlQryEl_Parenthese {
PARENTHESES_OPEN("("),
PARENTHESES_CLOSE(")");
String symbol;
PlQryEl_Parenthese(String symbol) {
this.symbol = symbol;
}
};
PlQryEl_Condition -->
package application.query.element;
import application.query.element.cond.PlQryEl_Cond_Object;
import application.query.element.cond.PlQryEl_Cond_Operator;
public class PlQryEl_Condition {
PlQryEl_Cond_Object aObject = PlQryEl_Cond_Object.PLAYLIST;
String sField="";
PlQryEl_Cond_Operator aOparator = PlQryEl_Cond_Operator.EQUAL;
String sValue = "";
public PlQryEl_Condition(PlQryEl_Cond_Object aObject, String sField, PlQryEl_Cond_Operator aOparator, String sValue) {
super();
this.aObject = aObject;
this.sField = sField;
this.aOparator = aOparator;
this.sValue = sValue;
}
};
PlQryEl_BoolOperator -->
package application.query.element;
public enum PlQryEl_BoolOperator {
LINK_OR("or"),
LINK_AND("and");
String symbol;
PlQryEl_BoolOperator(String symbol) {
this.symbol = symbol;
}
};
這里感興趣的是關於“PlQryEl_Condition”class 的對象:
PlQryEl_Cond_Object -->
package application.query.element.cond;
public enum PlQryEl_Cond_Object {
PLAYLIST("Playlist","vPlaylist"),
TRACK("Track","vTrack");
String symbol;
String dbViewName;
PlQryEl_Cond_Object(String symbol, String dbViewName) {
this.symbol = symbol;
this.dbViewName = dbViewName;
}
};
PlQryEl_Cond_Operator -->
package application.query.element.cond;
public enum PlQryEl_Cond_Operator {
EQUAL("="),
GREATER(">"),
SMALLER("<"),
EMPTY("is empty (null, NA, ...)"),
INLIST("in list");
String symbol;
String dbViewName;
PlQryEl_Cond_Operator(String symbol) {
this.symbol = symbol;
}
};
答案往往就在問題之內……這里就是這種情況!
我采用的解決方案是在枚舉周圍包裹一個“類”,以使它們“可實施”。
這解決了,顯然是這樣......但它是唯一/最好的解決方案嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.