A S*_* Sz 7 java boxing type-safety java-8 type-alias
假设我想确保Java在原始类型上的类型安全。举个例子,让我们想区分a Ratio和an AbsoluteValue,两者都由a表示double。
就我所知,Java不支持类型同义词。
因此,我很有信心会涉及一些开销。
从我的脑海中,我可以想到定义新的包裹double(很多样板)或子类化Double……或者甚至还有其他选择?
哪种方法给我带来最少的性能开销?
编辑:我仅限于Java 8,所以这是问题的隐式基础;但是,如果在该语言的较新版本中有替代解决方案,我仍然很想听听它们。
我能想到的最高效的方法是编写自己的包装类,其中有一些标记注释:
@PrimitiveTypeAlias(double.class)
public class Milliseconds
{
double value() { ... }
}
Run Code Online (Sandbox Code Playgroud)
然后在编译时连接到注释处理器,并用原始对应物物理替换包装类(使用 Lombok 之类的东西)。
...但我怀疑你可能是在暗示“最高效且省力”:)