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

使不同的int不兼容,在Java中,没有运行时成本,java,android,optimization,Java,Android,Optimization,在我假设的杂货店应用程序中,我有整数数量的苹果和桔子 是否有一种模式可以阻止在编译时对苹果和橙子进行比较、添加或删除,但这种模式会被优化掉?(在Android 4+和SDK 7+上) e、 g 是否可以/是否可以将上述内容编译或JIT为简单的整数算法,而不进行堆分配?没有模式:只需将它们设置为不相关的类型,其余的由类型系统完成: Apples a = new Apples(4); Oranges o = new Oranges(5); a.add(a); // Fine. o.add(o);

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

是否有一种模式可以阻止在编译时对苹果和橙子进行比较、添加或删除,但这种模式会被优化掉?(在Android 4+和SDK 7+上)

e、 g


是否可以/是否可以将上述内容编译或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);
  }
}

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

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);
  }
}
是否可以/是否可以将上述内容编译或JIT为简单的整数算术,而不进行堆分配

没有

或者至少,不适用于当前一代JIT编译器

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

显然,如果您不关心管理费用,那么您当前的方法将很好地工作

是否可以/是否可以将上述内容编译或JIT为简单的整数算术,而不进行堆分配

没有

或者至少,不适用于当前一代JIT编译器

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


显然,如果您不关心管理费用,您当前的方法会很好地工作。

为什么有人要比较苹果和橙子?没有任何模式可以完全优化。旁注:在这里应用这一点肯定不明智,但从概念上讲,JScience.org的JScience在处理这个问题上走得非常远。它们的度量、单位和转换结构(如或)正好解决了这个问题。@Aakash关键是阻止程序员在编译时意外地比较applicates和oranges。没有堆分配,我不认为有什么东西存在。为什么有人想比较苹果和橙子?没有任何模式会被完全优化掉。旁注:在这里应用这一点肯定不明智,但从概念上讲,JScience.org的JScience在处理这个问题上走得非常远。它们有度量、单位和转换(如或)的结构,正好解决了这个问题。@Aakash关键是阻止程序员在编译时意外地比较applications和oranges。没有堆分配,我认为没有什么东西。是的,这就是我在代码示例中暗示的。是的,这就是我在代码示例中暗示的。