垃圾進入回收站時是混雜的,程式必須在缺乏型別資訊的情況下正確分類。初版 RecycleA 使用 RTTI(執行期型別識別)實現:將所有垃圾上鑄為 Object 存入 Vector,分類時透過 instanceof 判斷具體型別並下鑄。
為避免類別名稱衝突,每個版本置於獨立套件(如 c16.recyclea)。Trash 為抽象基類,含 weight、value() 及靜態 sumValue()。三個子類別 Aluminum、Paper、Glass 各自定義價值常數。main() 以亂數產生 30 筆垃圾,再用三個 Vector 分類收集。
程式雖能正常運作,但存在嚴重缺陷:分類邏輯硬編碼了所有已知型別。新增 Cardboard 時,若忘記在分類迴圈加入 if(t instanceof Cardboard),該類別垃圾將被忽略,且編譯器不會報錯。這正是 RTTI 濫用的典型後果——「每種類型都進行測試」導致擴充性極差。後續章節將展示如何透過多型與設計模式徹底解決此問題。