簡體   English   中英

將豆作​​為許多具體類型之一

[英]Receiving a bean as one of many concrete types

我有一個大約五個級別的Java bean繼承層次結構,其中許多類型的車輛模型是最深層次的子類。 每輛車大約有20個場地。 我正在讓工廠根據值返回特定的車輛型號。 然后,我必須使用設置器來設置二十個字段中的每個字段。 但是屬性以及設置者取決於每個模型。 這些模型不實現任何接口。 即使他們這樣做了,我也無法在接收到空具體類型的接口類型上調用設置器。是否有辦法將引用接收到具體模型類型中,以便我可以調用設置器? 該類的其余部分需要使用這樣的引用來調用其他方法。

我想收到以下其中一項:

Camry camry = Factory.get("DL");
Taurus taurus = Factory.get("BC");
Cadillac cadillac = Factory.get("ES");

然后,使用適當的參考之一。 cadillac.setStarSystem(“ star123”); ..所有與凱迪拉克相關的二傳手

使用工廠不是必需的。 任何其他技術都可以。

謝謝!

如果您知道要恢復哪種類型,這不只是一個簡單的轉換練習嗎? (“任何其他技術都可以使用嗎?”)

Camry camry = (Camry)vehicles.get("DL");
Taurus taurus = (Taurus)vehicles.get("BC");
Cadillac cadillac = (Cadillac)vehicles.get("ES");

cadillac.setStarSystem("star123");

不,您不需要使用任何特定的接口來執行此操作。 如顯示/提及,這將使您“將參考接收到具體的模型類型中,以便我可以調用設置器”。

(Java 1.5 / 5.0引入的泛型的一個不幸的副作用是,它有時會導致用戶忘記多態性的基礎-突然之間,“廣播很糟糕”。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM