【问题标题】:Is automatic overloading possible?可以自动超载吗?
【发布时间】:2012-04-24 14:15:30
【问题描述】:

考虑一下:

public static abstract class JunkValue<X>{
    public abstract X value();
    public static <X> JunkValue<X> fix(final X x){
        return new JunkValue<X>()
            {

                @Override
                public X value() {
                    return x;
                }};
    }
}

现在我可以轻松制作这两种方法了:

void test(HappyObject object){test(JunkValue.fix(object));}

void test(JunkValue<HappyObject> object){...}

我想告诉我的编译器,如果我有 JunkValue&lt;HappyObject&gt; 参数,我可以使用 HappyObject 对象参数来代替。

我的想法是您可以使用 Number=1; 而不是 Number=new Number(1),当我扩展 Number 时,我感到非常满意。我只想用对象而不是数字来达到同样的效果。

谢谢。

【问题讨论】:

  • Java 中没有运算符重载。您将其与自动装箱混淆
  • 是的,我把它和我从未听说过的东西混淆了……不过我会查一下自动装箱,谢谢。

标签: java generics overloading


【解决方案1】:

自动装箱是语言规范的一部分,无法扩展(无需更改编译器)

【讨论】:

  • 谢谢。似乎它应该是一个功能。奇怪。
  • 这是许多语言的一个功能。 Java 往往功能很差,并避免了那些增加设计复杂性的功能,自动装箱已经足够令人困惑,而自定义自动装箱更有可能令人困惑而不是有用。
  • 我同意,我只想要简洁的动态编码。 =x
猜你喜欢
  • 2011-05-30
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2020-07-15
  • 1970-01-01
  • 2011-10-21
  • 2012-07-19
相关资源
最近更新 更多