[問題] 如何做一個類別,讓它能被 boxing conversion

看板java作者 (!H45)時間18年前 (2007/06/12 17:49), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
我正在做一個類神經網路 類神經元和類神經元之間有「鍵結值」 我把「鍵結值」做成一個新的類別: Weight 它會是一個浮點數,所以 Weight 的類別宣告如下: public final class Weight extends Float 略懂 Java 的人都知道,這樣做是不合法的 因為 Float 是一個 final class, 所以無法被繼承到 Weight 我改為以下寫法: public final class Weight extends Number 並且增加一個成員變數: weight, 其型態為 Float, 作為「鍵結值」的真正數值 但是我在寫類神經元這個類別的時候,一次需要處理多個「鍵結值」,所以需要一個容器 來裝這些 Weight: ArrayList<Weight> W = new ArrayList<Weight>(); W.add(123); W.add(456); W.add(789); 略懂 Java 的人都知道,這樣做是不合法的 因為 Weight 不是 Number 也不是 Float, 它只是繼承了 Number 罷了 Boxing conversion 並不會作用,所以連編譯都不會過 我改為以下寫法: ArrayList<Weight> W = new ArrayList<Weight>(); W.add(new Weight(123)); W.add(new Weight(456)); W.add(new Weight(789)); 這樣雖然程式會動,但是我認為程式碼實在是醜得要命 如果有辦法做出一個類別能夠支援 Boxing conversion 就好了 就像 W.add(123); 這樣乾淨又簡單 請問有辦法做到這回事嗎? -- 選擇做一個 Weight 類別而不直接用 Float 當作「鍵結值」型態的原因 是我打算利用虛擬資料型態來描述整個系統,而不要什麼都基本型態,搞亂思維。 也就是說,我想保留 Weight 類別,但又想讓它能夠 Boxing convert 一個 float value 成為 Weight 類別。不知道有沒有辦法可以達成呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.205.85
文章代碼(AID): #16RcmWRx (java)