作者H45 (!H45)
看板java
标题[问题] 如何做一个类别,让它能被 boxing conversion
时间Tue Jun 12 17:49:19 2007
我正在做一个类神经网路
类神经元和类神经元之间有「键结值」
我把「键结值」做成一个新的类别: 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