Java - 创建伪本地类型
Java - Creating a Pseudo Native Type
在股票交易中,数量通常是整数(例如 5 倍股票、10 倍期权等)。对于加密货币,数量是分数(例如 0.01 比特币)。在这两种情况下,通常都有一个最小单位(例如 100 倍份额的倍数)。
我想将此逻辑包装在 Quantity
class 中。然而:
- Java 原生类型(例如
double
)是 final
,所以我无法扩展它们
- Java不支持运算符重载,所以算术会很丑
- Java 不支持 typedef,所以我不能用
Quantity
类型 包装 double
所以我想我的问题是,如果我想创建类似于本机类型的东西(很多实例、按值传递、很多算术),是否有 "classic" Java解决方案?从记忆中,C# 有一个 struct
类型,它是按值传递的,在 Java 中有类似的东西吗?
谢谢,
编辑:是否可以从 C++ 代码导入本机类型,并有效绕过 Java?
是的,可以在 Java 中声明 typedef,保证 type-correctness,但没有语法复杂性和 run-time 声明新 Java 的开销] class.
作为用户,您可以通过编写类型注释并在编译时使用注释处理器来实现。例如,您可以为数量编写 @Quantity int
,然后使用 javac -processor QuantityProcessor MyFile.java
进行编译。您可以对 @Quantity int
使用任何算术运算,如果您将常规 int
与 @Quantity int
混合使用,或者存在其他错误(例如值不正确),编译器会发出警告在正确的范围内或不是 100 的倍数。
有人需要定义类型注释和注释处理器,并且由于您的要求是独一无二的,您可能需要创建自己的。 Checker Framework 是一种可以轻松创建类型注释和注释处理器的框架。 (披露:我是一名开发人员。)
Checker Framework manual 的以下部分可能特别有用。
在股票交易中,数量通常是整数(例如 5 倍股票、10 倍期权等)。对于加密货币,数量是分数(例如 0.01 比特币)。在这两种情况下,通常都有一个最小单位(例如 100 倍份额的倍数)。
我想将此逻辑包装在 Quantity
class 中。然而:
- Java 原生类型(例如
double
)是final
,所以我无法扩展它们 - Java不支持运算符重载,所以算术会很丑
- Java 不支持 typedef,所以我不能用
Quantity
类型 包装
double
所以我想我的问题是,如果我想创建类似于本机类型的东西(很多实例、按值传递、很多算术),是否有 "classic" Java解决方案?从记忆中,C# 有一个 struct
类型,它是按值传递的,在 Java 中有类似的东西吗?
谢谢,
编辑:是否可以从 C++ 代码导入本机类型,并有效绕过 Java?
是的,可以在 Java 中声明 typedef,保证 type-correctness,但没有语法复杂性和 run-time 声明新 Java 的开销] class.
作为用户,您可以通过编写类型注释并在编译时使用注释处理器来实现。例如,您可以为数量编写 @Quantity int
,然后使用 javac -processor QuantityProcessor MyFile.java
进行编译。您可以对 @Quantity int
使用任何算术运算,如果您将常规 int
与 @Quantity int
混合使用,或者存在其他错误(例如值不正确),编译器会发出警告在正确的范围内或不是 100 的倍数。
有人需要定义类型注释和注释处理器,并且由于您的要求是独一无二的,您可能需要创建自己的。 Checker Framework 是一种可以轻松创建类型注释和注释处理器的框架。 (披露:我是一名开发人员。)
Checker Framework manual 的以下部分可能特别有用。