微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我需要Java自定义自动装箱

如何解决我需要Java自定义自动装箱

是否可以在Java中定义自定义自动装箱?

键入函数的参数时,我需要自动java.lang.Number转换为类org.expr.NumberExpression。对于两个参数,我最终编写了四个非常相似的方法

public class Assemble {

  public NumberExpression add(NumberExpression a,NumberExpression b) {
    // do something
  }

  public NumberExpression add(NumberExpression a,Number b) {
    return add(a,new NumberConstant(b));
  }

  public NumberExpression add(Number a,Number b) {
    return add(new NumberConstant(a),NumberExpression b) {
    return add(new NumberConstant(a),b);
  }

}

所以我可以输入:

assemble.add(5,assemble.add(7,3));
assemble.add(5,3),8,15); // does not work

但是,我认为这对于10个参数(我想做的)变得难以管理。我想我需要写1024个类似的方法

我正在考虑的另一种解决方案是编写一种方法

  public NumberExpression add(NumberExpression... numbers) {
    // do something
  }

但是我可以输入混合在一起的NumberNumberExpression作为参数吗?

解决方法

  1. 正如人们所说的那样
  2. 您通常如何解决的问题是您自己包装值并只有一种方法(请看BigDecimal)
assemble.add(
    new IntegerConstant(5),assemble.add(new IntegerConstant(7),new IntegerConstant(3))

或使用工厂:

assemble.add(
    NumberExpression.of(5),assemble.add(NumberExpression.of(7),NumberExpression.of(3))

其中:

   class NumberExpression {
       public static IntegerConstant of(Integer v) {
           //...
       }

       public static DoubleConstant of(Double v) {
           //...
       }
    }
,

否,您无法定义自定义自动装箱

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。