在Java中,使不同的int不兼容,并且没有运行时成本



在我假设的杂货店应用程序中,我有整数数量的苹果和橙子。

有没有一种模式可以让我在编译时停止比较、添加或减去苹果和桔子,但它会被优化掉?(在Android 4+和SDK 7+上)。

例如

public class Apples {
  final int count;
  public Apples(int count) {
    this.count = count;
  }
  public Apples add(Apples count) {
    return new Apples(this.count + count);
  }
  ...
}

是否可以编译或将上面的内容转换为简单的整数运算,而不进行堆分配?

是否可以编译或将上面的内容转换为简单的整数运算,而不进行堆分配?

没有。

至少,当前一代JIT编译器没有。

而且,我不认为有任何其他解决方案可以满足你的需求;即提供类型安全的数量,而不需要对象和对象分配的开销

显然,如果你不关心管理费用,你目前的方法会很好。

没有模式:只需使它们成为不相关的类型,其余的由类型系统完成:

Apples a = new Apples(4);
Oranges o = new Oranges(5);
a.add(a);  // Fine.
o.add(o);  // Fine.
a.add(o);  // Compiler error.
o.add(a);  // Compiler error.
public final class Apples {
  final int count;
  public Apples(int count) {
    this.count = count;
  }
  public Apples add(Apples count) {
    return new Apples(this.count + count);
  }
}
public final class Oranges {
  final int count;
  public Oranges(int count) {
    this.count = count;
  }
  public Oranges add(Oranges count) {
    return new Oranges(this.count + count);
  }
}

最新更新