在我假设的杂货店应用程序中,我有整数数量的苹果和橙子。
有没有一种模式可以让我在编译时停止比较、添加或减去苹果和桔子,但它会被优化掉?(在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);
}
}