我正在開發一個java應用程序。這是一個抽象類模型和2個派生類模型1和模型2.模型1和模型2的行爲不同,所以我想讓用戶從兩者中選擇一個模型。 它可以等來實現:Java,類類型列表
Model model;
If(response==1){
model = new Model1();
}else if(response==2){
model = new Model2();
}
現在有了這個問題,如果我添加一個新類Model3,我不得不重寫代碼。 我可以創建一個List,在那裏我將從每個類添加一個實例,然後添加一個靜態方法,該方法將返回該類的一個新實例,但是我希望可以用更多樣式來完成。
是否有可能創建一個列表,以容納每個類的類型。從這個列表我可以創建一個菜單來選擇一個模型,然後使用該類型來創建用戶需要的類。
那麼有可能創建一個List<Class>
,然後使用Class對象作爲構造函數來創建給定類的實例?
+1不使用反射。有時你必須(但如果你在編譯時不知道這個類) – 2012-02-25 20:04:30
@StevenSchlansker,我同意有用於反射。我更喜歡將它限制在Java對象系統和其他系統(文件系統,ORM,嵌入式腳本語言)之間的邊界上。如果您完全使用Java,那麼通常有更好的方式來使用它,而不會影響維護人員重構代碼,遵循程序流程等的能力。 – 2012-02-25 20:43:28